Перейти к содержимому

Реферальная программа Мегаплана

Выбрать шаблон и создать сайт

Sql запрос к prop

#1 кипятильник

кипятильник
  • Пользователь
  • 102 сообщений
  • Репутация: 0
0

Отправлено 09 Сентябрь 2014 - 11:21

есть база к примеру

 

good | prop
-----------
1 |1
-----------
1 |2
-----------
2 |1
-----------
3 |2
 

нужно сделать запрос к prop с параметрами "1,2"

что бы вывело good "1"


 

 

  • 0

#2 kamchatniyoleg

kamchatniyoleg
  • Пользователь PRO
  • 1 178 сообщений
  • Репутация: 84

Отправлено 09 Сентябрь 2014 - 13:08

Не понял сути задачи

SELECT `good` WHERE `good` = 1, `prop` = 2

Или если запрос выбирает вот эту строку, а вам нужны все строки дополнительно где указан "good" в значении "1"?


--------------------------------------------------------------------

Или вот так нужно?

SELECT * FROM `lalala` WHERE `prop` IN ('1', '2')

  • 0
Сервис электронного информирования клиентов PostTrail.ru
Отслеживание посылок Почты России в автоматическом режиме! Лояльность клиента - прибыль магазина!


#3 кипятильник

кипятильник
    Topic Starter
  • Пользователь
  • 102 сообщений
  • Репутация: 0

Отправлено 10 Сентябрь 2014 - 11:01



--------------------------------------------------------------------

Или вот так нужно?



SELECT * FROM `lalala` WHERE `prop` IN ('1', '2')

Так точно не нужно, он выводит good 1,2,3

 

 

мне нужен такой запрос, что бы обратиться только к prop, и получить good 1


  • 0

#4 kamchatniyoleg

kamchatniyoleg
  • Пользователь PRO
  • 1 178 сообщений
  • Репутация: 84

Отправлено 10 Сентябрь 2014 - 11:36

SELECT * FROM `lalala` WHERE `prop` IN ('1', '2') LIMIT 1 ORDER BY `good` ASC

Я не пойму что вы хотите и для чего вам это. Опишите подробнее задачу. 


  • 0
Сервис электронного информирования клиентов PostTrail.ru
Отслеживание посылок Почты России в автоматическом режиме! Лояльность клиента - прибыль магазина!


#5 matroskin8

matroskin8
  • Пользователь PRO
  • 767 сообщений
  • Репутация: 143

Отправлено 10 Сентябрь 2014 - 12:03

 

мне нужен такой запрос, что бы обратиться только к prop, и получить good 1

 

Для этого нужно привязаться к какому-то уникальному значению, а в представленном примере таковых нет (ну а сервер, к счатью, не умеет читать мысли). По какому бы значению мы не обратились к prop (то ли 1, то ли 2), всегда будут выбраны несколько полей good: для prop = 1 это будет good 1 и 2, для prop 2, соответственно, good 1 и 3.

Добавьте для каждого поля уникальные значения (например, ID) и выбирайте по prop и ID.


  • 0


#6 кипятильник

кипятильник
    Topic Starter
  • Пользователь
  • 102 сообщений
  • Репутация: 0

Отправлено 10 Сентябрь 2014 - 16:37

good - это ID Товара,

prop - это параметр товара

 

к примеру выбрав параметры по prop:1,2

мне нужно что бы высвечивало только тот товар который имеет эти значения тоесть good:1







SELECT * FROM `lalala` WHERE `prop` IN ('1', '2') LIMIT 1 ORDER BY `good` ASC

Я не пойму что вы хотите и для чего вам это. Опишите подробнее задачу. 

 


Сообщение отредактировал кипятильник: 10 Сентябрь 2014 - 16:38

  • 0

#7 kamchatniyoleg

kamchatniyoleg
  • Пользователь PRO
  • 1 178 сообщений
  • Репутация: 84

Отправлено 10 Сентябрь 2014 - 16:50

Так тогда не пишите в базу по несколько строк с одинаковой ID товара. Пишите значения через запятую и потом используйте LIKE, по моему так правильнее будет.


  • 0
Сервис электронного информирования клиентов PostTrail.ru
Отслеживание посылок Почты России в автоматическом режиме! Лояльность клиента - прибыль магазина!


#8 кипятильник

кипятильник
    Topic Starter
  • Пользователь
  • 102 сообщений
  • Репутация: 0

Отправлено 10 Сентябрь 2014 - 17:02

к сожалению не могу так


  • 0

#9 matroskin8

matroskin8
  • Пользователь PRO
  • 767 сообщений
  • Репутация: 143

Отправлено 10 Сентябрь 2014 - 18:01


к примеру выбрав параметры по prop:1,2 мне нужно что бы высвечивало только тот товар который имеет эти значения тоесть good:1

Для конкретного примера в первом сообщении:

SELECT * FROM goods WHERE prop IN ( 1, 2 ) GROUP BY good HAVING COUNT(good) > 1

Если нужно точное соответствие кол-ву параметров, тогда в выражении HAVING нужно передавать это кол-во, изменив оператор:

SELECT * FROM goods WHERE prop IN ( 1, 2 ) GROUP BY good HAVING COUNT(good) = 2

Но все же я бы задумался над изменением архитектуры БД.


  • 0


#10 kamchatniyoleg

kamchatniyoleg
  • Пользователь PRO
  • 1 178 сообщений
  • Репутация: 84

Отправлено 11 Сентябрь 2014 - 08:05

кипятильник,matroskin8,  Полностью согласен с оратором выше. Архитектура БД не логична, на мой взгляд. На будущее вам будет проще сменить ее. Если у вас конечно эта таблица используется не в одном месте.


  • 0
Сервис электронного информирования клиентов PostTrail.ru
Отслеживание посылок Почты России в автоматическом режиме! Лояльность клиента - прибыль магазина!


robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru