Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Связать таблицу с двумя (или более) с помощью left join  [new]
tted
Member

Откуда:
Сообщений: 5
Прошу помочь: как правильно написать запрос

Есть 3 (или более) таблицы:
Таблица1:
Поле: Товар

Таблица2
Поле: Товар
Поле: Количество1

Таблица3
Поле: Товар
Поле Количество2

В результирующей таблице надо получить:
Поле: Товар
Поле: Количество1
Поле: Количество2

Из Таблицы1 должны присутствовать все элементы.

MS SQL2000

Спасибо.
21 авг 12, 11:54    [13042004]     Ответить | Цитировать Сообщить модератору
 Re: Связать таблицу с двумя (или более) с помощью left join  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Так у вас ответ в заголовке топика - с помощью left join.
21 авг 12, 12:20    [13042226]     Ответить | Цитировать Сообщить модератору
 Re: Связать таблицу с двумя (или более) с помощью left join  [new]
tted
Member

Откуда:
Сообщений: 5
Не выходит.
Делал по такому образцу :
SELECT Cars.*, WeightOpt.opt_value AS Weight, HeightOpt.opt_value AS Height FROM Cars
LEFT JOIN CarOpts AS WeightOpt
ON WeightOpt.car_id = Cars.id AND WeightOpt.opt_name = "Weight"
LEFT JOIN CarOpts AS HeightOpt
ON HeightOpt.car_id = Cars.id AND HeightOpt.opt_name = "Height"
WHERE Cars.id = 1

На втором joine выдается ошибка
21 авг 12, 12:22    [13042245]     Ответить | Цитировать Сообщить модератору
 Re: Связать таблицу с двумя (или более) с помощью left join  [new]
SHok_by
Member

Откуда: Minsk
Сообщений: 51
текст ошибки какой?
21 авг 12, 12:25    [13042274]     Ответить | Цитировать Сообщить модератору
 Re: Связать таблицу с двумя (или более) с помощью left join  [new]
SHok_by
Member

Откуда: Minsk
Сообщений: 51
WeightOpt.opt_name = "Weight" -> WeightOpt.opt_name = 'Weight'

и

HeightOpt.opt_name = "Height" -> HeightOpt.opt_name = 'Height'
21 авг 12, 12:29    [13042311]     Ответить | Цитировать Сообщить модератору
 Re: Связать таблицу с двумя (или более) с помощью left join  [new]
Konst_One
Member

Откуда:
Сообщений: 11562
SELECT 
	Cars.*, 
	W.Weight, 
	H.Height 
FROM Cars 
		LEFT JOIN (SELECT opt_value as Weight, car_id  FROM CarOpts WHERE opt_name = 'Weight') AS W
				ON W.car_id = Cars.id
		LEFT JOIN (SELECT opt_value as Height, car_id  FROM CarOpts WHERE opt_name = 'Height') AS H
			ON H.car_id = Cars.id
WHERE 
	Cars.id = 1


это что ли хотите получить?
21 авг 12, 12:38    [13042389]     Ответить | Цитировать Сообщить модератору
 Re: Связать таблицу с двумя (или более) с помощью left join  [new]
tted
Member

Откуда:
Сообщений: 5
Спасибо, господа )
21 авг 12, 13:50    [13042998]     Ответить | Цитировать Сообщить модератору
 Re: Связать таблицу с двумя (или более) с помощью left join  [new]
iap
Member

Откуда: Москва
Сообщений: 47047
Konst_One
SELECT 
	Cars.*, 
	W.Weight, 
	H.Height 
FROM Cars 
		LEFT JOIN (SELECT opt_value as Weight, car_id  FROM CarOpts WHERE opt_name = 'Weight') AS W
				ON W.car_id = Cars.id
		LEFT JOIN (SELECT opt_value as Height, car_id  FROM CarOpts WHERE opt_name = 'Height') AS H
			ON H.car_id = Cars.id
WHERE 
	Cars.id = 1


это что ли хотите получить?
А зачем подселекты - не понял
21 авг 12, 13:57    [13043046]     Ответить | Цитировать Сообщить модератору
 Re: Связать таблицу с двумя (или более) с помощью left join  [new]
Konst_One
Member

Откуда:
Сообщений: 11562
да, подселекты конечно не обязательны
21 авг 12, 14:04    [13043095]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить