Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Непростой запрос с LEFT JOIN (Vitax) 15/11/2011 - 14:03:10
      Re: Непростой запрос с LEFT JOIN (Akina) 15/11/2011 - 18:54:14

> Original message text:
> From: Vitax - 15/11/2011 - 14:03:10
> Subject:Непростой запрос с LEFT JOIN
> -----------------
> Ищу простое решение...
>
> Есть три таблицы :
>
> tA tB tC
> +---+-------+ +---+-------+ +---+-------+
> |id | aname | |id | bname | |id | cname |
> +---+-------+ +---+-------+ +---+-------+
> | 1 | Cat | | 1 | aaa | | 1 | xxx |
> | 2 | Dog | | 1 | bbb | | 1 | yyy |
> | 3 | Bird | | 2 | ccc | | 1 | zzz |
> +---+-------+ | 2 | ddd | | 2 | www |
> +---+-------+ +---+-------+
>
> Нужен запрос где в итоге будет такой вид:
>
> +---+-------+-------+-------+
> |id | aname | bname | cname |
> +---+-------+-------+-------+
> | 1 | Cat | aaa | xxx |
> | 1 | Cat | bbb | yyy |
> | 1 | Cat | NULL | zzz |
> | 2 | Dog | ccc | www |
> | 2 | Dog | ddd | NULL |
> | 3 | Bird | NULL | NULL |
> +---+-------+-------+-------+
>
> Сделал такой вот запрос:
>
> SELECT tA.*,
> tB.bname,
> tC.cname
> FROM tA
> LEFT OUTER JOIN tB
> ON tA.id = tB.id
> LEFT OUTER JOIN tC
> ON tB.id = tC.id
> ORDER BY
> tA.id,
> tB.bname,
> tC.cname
>
> Выдает не совсем то что нужно:
>
> +---+-------+-------+-------+
> |id | aname | bname | cname |
> +---+-------+-------+-------+
> | 1 | Cat | aaa | xxx |
> | 1 | Cat | aaa | yyy |
> | 1 | Cat | aaa | zzz |
> | 1 | Cat | bbb | xxx |
> | 1 | Cat | bbb | yyy |
> | 1 | Cat | bbb | zzz |
> | 2 | Cat | ccc | www |
> | 2 | Dog | ddd | www |
> | 3 | Bird | NULL | NULL |
> +---+-------+-------+-------+
>
> Чувствую, что где то нужно дополнительное условие вставить, что бы выдавало:
> - количество строк по каждому id
> - в зависимости от того, где максимальное количество значений id;
>
> Примерно так мне думается, а как на самом деле нужно построить запрос, пока де придумал...прошу наставить на путь истинный.
>
>
>
>


From: Akina - 15/11/2011 - 18:54:14
Subject:Непростой запрос с LEFT JOIN
-----------------
> Есть три таблицы

Не надо фотографий. Скрипты создания и наполнения таблиц - в студию.

И - самое главное - вменяемое объяснение, почему в одной строке собраны именно aaa из 2-й таблицы и xxx из третьей (а не yyy или zzz). При этом помните - это не файловая БД, понятия "порядок следования записей в таблице" здесь НЕ СУЩЕСТВУЕТ.


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
40721



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |