MYSQL IN() + SOME PARAMETR for LEFT JOIN

PN
На сайте с 01.05.2008
Offline
113
789

У меня есть выборка по 2-м полям. Сейчас работает выборка по ID, кот. забиты в список

WHERE page_id IN (1,3,5,45)

Но теперь мне надо добавить второй пармерт. Т.е. не только ID а например PARAMID и что бы при его выводе они были как отдельные объекты.

Т.е. например у ID = 1, может быть несколько занчений PARAMID

ПОдскажите плиз

По этому paramid нужен LEFT JOIN

siv1987
На сайте с 02.04.2009
Offline
427
#1

WHERE page_id IN (1,3,5,45) AND PARAMID

Если я что-то понял.

Милованов Ю.С
На сайте с 24.01.2008
Offline
196
#2

что бы при его выводе они были как отдельные объекты...

Очень интересно...

Нарисуйте в паинте Вашу таблицу и покажите стрелочками и текстом, что и куда должно выводиться и что с чем объединяться.

Подпись))
PN
На сайте с 01.05.2008
Offline
113
#3

Сейчас, В общем, в IN это логически никак не запихнуть, я решил вопрос частично, возник еще вопросик. И так

SELECT cp.id, comp.complectation_id

FROM page AS cp

LEFT JOIN complectation AS comp ON cp.id = comp.complectation_productid WHERE ( id='19923' AND complectation_id='10' ) OR ( id='19923' AND complectation_id='12' )

GROUP BY cp.id LIMIT 100

Все бы круто, только значений к одному id='19923' в таблице complectation - несколько. Как видно в запросе выше. Так вот проблема в том что GROUP BY не совсем корректно работает. МНе надо что бы вывелось 2 результата. А выводится только один т.к. группировака по id. А без групироваки не работает


---------- Добавлено 15.02.2013 в 22:58 ----------

siv1987:
WHERE page_id IN (1,3,5,45) AND PARAMID
Если я что-то понял.

В param может быть несколько значений, так что не подходит. ТАм должно быть соотвествие ID + pramin = x , и так целый ряд значений...

---------- Добавлено 15.02.2013 в 23:10 ----------

Попробовал ( cp.id+comp.complectation_id ) as unique_id

и потом GROUP BY unique_id

в результате 3 а не 2 записи выдается

---------- Добавлено 15.02.2013 в 23:29 ----------

Вот таблицы бд схематически



---------- Добавлено 15.02.2013 в 23:38 ----------

Новый глюк.

Вот оно что ) В общем если нету значения в complectation то ничего не выдает.. А это же LEFT JOIN ... В общем глюк теперь такой. НЕ КО ВСЕМ ПОЛЯМ ЕСТЬ ЗНАЧЕНИЕ complectation, Т.е. некоторые просто пустые, а некоторые имеют значения (как в примере выше) и резльутатот должны быть разные объекты. В чем тогда глюк?

---------- Добавлено 16.02.2013 в 00:21 ----------

В общеми глюк в том что если выбираются данные, к которым во второй таблице "complectation" нет данных, то они не выводятся. Т.е. групировка идет по чему-то уникальному - а в этом случае не повторимое это complectation_id, А как быть в случае если этого уникального ключа к некоторым полям нету?
PN
На сайте с 01.05.2008
Offline
113
#4

Никто совсем не знает как сделать?

IL
На сайте с 20.04.2007
Offline
435
#5

GROUP BY cp.id, comp.complectation_id

А как быть в случае если этого уникального ключа к некоторым полям нету?

А как надо?

Если строки не нужны - делать INNER JOIN

Если нужны - обрабатывать так "как нужны"..

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
PN
На сайте с 01.05.2008
Offline
113
#6

Пришлось создавать ко всем данным значения для GRUOP, уникальный идентификатор. Иначе никиак. Двойно GROUP вобще возвращал мало резлуьтатов

VHS-1980
На сайте с 21.05.2010
Offline
91
#7

Или я чего-то не понял, или запрос надо было делать к complectation - там есть все нужные параметри и джойнить уже к ней page

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий