Как LEFT JOIN присоединяет данные по условию OR

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
все. я совсем запутался.
1. раз Вы пишете
Какие бы значения они не имели, но если присутствуют обе записи - необходимо присоединять для type='XXX'.
2.й
которая была первой занесена в таблицу, а остальные отсеет...
-~{}~ 19.10.07 15:37:

группировка и сортировка не по одному полю...
Отредактировано Avenus 19.10.07 в 15:32
Да ну?
Пример можно?
Или догадаться?
 

Avenus

Under Glory Yield
Извиняюсь, если я запутал Вас :)
Попытаюсь рассказать задачу не языком mysql:

"Люди пишут статьи и у них либо есть личные фото, либо нет. А также они могут прикрепить какое-нибудь фото к статье."

Надо вывести список этих статей и фото:
1. Если нет никакого, то никакого фото не выводить.
2. Если есть личное фото у пользователя, то вывести его фото.
3. Если есть и личное фото пользователя и прикрепленное фото к статье, то вывести только прикрепленное фото к статье.

Теперь таблицы:
t1 - это статьи
t2 - это фото (все)

Выбираем (сокращенный вариант):
t1.id - id статьи
и присоединяем t2.id - id фото

??? Условие... которое не могу никак решить...
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Надо вывести список этих статей и фото:
Вы представляете что вернёт запрос по Лефт Джойну если в статье 50 фотографий...?
Оно Вам нужно? :)

1. Если нет никакого, то никакого фото не выводить.
1. SELECT fields FROM articles (джойн на автора) - статья плюс фото автора
2. SELECT fields FROM fotos WHERE - фото к статье

А 1-н запрос в данном случае, думаю, изврат.


-~{}~ 19.10.07 16:40:

+
тормознул
К верхним постам забыл указать, что
ALTER TABLE `t2` ORDER BY `type`
 

Avenus

Under Glory Yield
При добавлении фото, у них добавляется ключ main...
я не писал в условии t2.main=1, в общем это неважно. Главное, что в результате 1 фотография (превью так сказать).

Может и иврат в 1-н запрос, но все же... Если это невозможно, то я успокоюсь :)

-~{}~ 19.10.07 18:12:

А можно каким-то образом присоединить 2 разных значения id из таблицы t2 для type='XXX' и type='YYY' только разным ключам?

... т.е. одно значение t2.id as id_XXX
а другое (не знаю как) t2.id as id_YYY
 

Avenus

Under Glory Yield
Так я смогу проверять потом по условию if что мне выводить: фото пользователя или фото статьи (главное).
 

Avenus

Under Glory Yield
select t1.id,t2.id as t2_id для LEFT JOIN t2 on t2.uid=t1.id .... для одного.
А я имею ввиду, как тогда будет выглядеть ключ t2.id as t2_id для таких джойнов? ... этого и не делал
Ведь тогда 2 ключа должно быть?
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Avenus
Вы, наверное, издеваетесь да?
2 фотографии - 2 ключа, ну или что Вам там нужно будет..

Для каждого свой алиас.
f1.id as foto_key_1
f2.id as foto_key_2
 

Avenus

Under Glory Yield
Да я не спал сегодня :)
Все, спасибо, догнал....
Наконец-то решил эту проблему, с Вашей помощью разжевали - все работает!
 
Сверху