|
|
|
| Здравствуйте. Помогите с объединением запросов:
1. Таблица признаков вещи
ID признака | Признак
1 | Цвет
2 | Длинна
3 | Объём
|
2. Таблица значений признаков
ID Значения | ID признака | Значение
100 | 1 | Розовый
100 | 2 | 10 метров
100 | 3 | 2 литра
200 | 1 | Голубой
300 | 2 | 3 метра
400 | 1 | Голубой
|
Нужно вывести все значения признаков, если есть признак "Длинна". То есть, в итоге должно получится:
100: 10 метров, Розовый, 2 литра
300: 3 метра
То есть, связующее звено - ID признака. Что-то не разберусь никак( Спасибо! | |
|
|
|
|
|
|
|
для: babilonian
(05.06.2014 в 17:21)
| | А зачем объединять? Одним запросом можно обойтись:
SELECT id значения, значение FROM таблица значений признаков WHERE id признака = 1;
|
| |
|
|
|
|
|
|
|
для: babilonian
(05.06.2014 в 17:21)
| | tables:
props (id_p, prop)
propvals (id_g, id_p, val)
SELECT @idp := id_p FROM props WHERE prop = 'длинна';
SELECT id_g, GROUP_CONCAT(VAL, ORDER BY id_p, SEPARATOR ', ')
FROM propvals
GROUP BY id_g
HAVING MIN(ABS(id_p, @idp)) = 0 ;
|
| |
|
|
|
|
|
|
|
для: babilonian
(05.06.2014 в 17:21)
| | если структура как в предыдущем комменте:
<?
SELECT id_g, GROUP_CONCAT(val ORDER BY id_p SEPARATOR ', ')
FROM propvals
WHERE id_g IN (
SELECT DISTINCT id_g
FROM propvals
WHERE id_p = (
SELECT id_p
FROM props
WHERE prop = 'Length'
)
)
GROUP BY id_g
|
| |
|
|
|