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




MySQL.RU - Webboard



Вернуться
2 LEFT JOIN одной таблицы (Михаил) 22/11/2007 - 18:40:56
      Re: 2 LEFT JOIN одной таблицы (Михаил) 22/11/2007 - 18:44:17
      Re: 2 LEFT JOIN одной таблицы (Пётр) 04/06/2008 - 19:07:42

> Original message text:
> From: Михаил - 22/11/2007 - 18:40:56
> Subject:2 LEFT JOIN одной таблицы
> -----------------
> Гуру, помогите решить проблему:
> есть 2 таблицы:
> mysql> select * from products;
> +-------------+---------------+
> | products_id | products_name |
> +-------------+---------------+
> | 1 | one |
> | 2 | two |
> | 3 | three |
> | 4 | four |
> | 5 | five |
> +-------------+---------------+
> 5 rows in set (0.00 sec)
>
> mysql> select * from products_extra;
> +-------------+----------+-------------+
> | products_id | extra_id | extra_value |
> +-------------+----------+-------------+
> | 1 | 1 | 1-1 |
> | 1 | 2 | 1-2 |
> | 1 | 3 | 1-3 |
> | 2 | 1 | 2-1 |
> | 2 | 2 | 2-2 |
> | 3 | 1 | 3-1 |
> | 3 | 2 | 3-2 |
> | 3 | 3 | 3-3 |
> | 4 | 1 | 4-1 |
> | 4 | 2 | 4-2 |
> | 5 | 1 | 5-1 |
> | 5 | 2 | 5-2 |
> +-------------+----------+-------------+
> 12 rows in set (0.00 sec)
>
> нужно выбрать все из обеих таблиц, но так чтобы 2-я таблица превратилась в столбцы результата:
>
> select
> products.*,
> a1.extra_value r1,
> a2.extra_value r2,
> a3.extra_value r3
> from
> products
> left join products_extra a1 using(products_id)
> left join products_extra a2 using(products_id)
> left join products_extra a3 using(products_id)
> where
> a1.extra_id = 1
> and a2.extra_id = 2
> and a3.extra_id = 3;
> +-------------+---------------+------+------+------+
> | products_id | products_name | r1 | r2 | r3 |
> +-------------+---------------+------+------+------+
> | 1 | one | 1-1 | 1-2 | 1-3 |
> | 3 | three | 3-1 | 3-2 | 3-3 |
> +-------------+---------------+------+------+------+
>
> вроде все нормально, но не выбираются те строки, для которых не определён products_extra с кодом 2. А нужно чтобы там был NULL или что-то типа того.
>
> Подскажите как это можно сделать?
> Или другой вариант, если есть...
>
>


From: Пётр - 04/06/2008 - 19:07:42
Subject:2 LEFT JOIN одной таблицы
-----------------
Попробуйте
where
a1.extra_id = 1
and a2.extra_id in(null,2)
and a3.extra_id in(null,3)


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

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

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



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