Помогите составить запрос, у меня какой-то ступор.
Есть таблица с изделиями tbl_items:
id_item (PK)
descr и т.д.
Каждое изделие id_item может содержать внутри себя от одного до нескольких камней. Существует таблица камней - tbl_stones. Разбивая эту связь М-М, образовалась таблица tbl_stones_item, которая имеет поля:
id_item
id_stone
Например, заполняю ее так:
1111 22
1111 33
Теперь я хочу выбрать информацию об изделии из tbl_items.
SELECT i.*, st.id_stone
FROM tbl_items i INNER JOIN tbl_stones_item st ON i.id_item = st.id_item
WHERE i.id_item = 1111;
Но получается в результате 2 строки, отличающиеся только полем st.id_stone. Оно и понятно, ведь 2 камня в изделии. Как мне создать выборку, чтобы для каждого изделия был 1 столбец , где через запятую можно было бы увидеть все камни, которые он содержит.
У меня не идет что-то ....
Спустя 1 час, 3 минуты, 9 секунд (15.09.2010 - 11:25) SlavaFr написал(а):
1) для перестроховки используй LEFT JOIN, так как по твоему расказу изделие может содержать камни.
2)в МySql можно попробывать group_concat(), но я предпочел бы зделать все при помощи скрипта.
2)в МySql можно попробывать group_concat(), но я предпочел бы зделать все при помощи скрипта.
Спустя 1 час, 24 минуты, 15 секунд (15.09.2010 - 12:50) olya-kowka написал(а):
SlavaFr, спасибо!
Про left join согласна.
За group_concat тоже спасибо, я о ней не знала.
Стала ее применять, она мне BLOB возвращает.
В итоге сделала так:
Про left join согласна.
За group_concat тоже спасибо, я о ней не знала.
Стала ее применять, она мне BLOB возвращает.
В итоге сделала так:
SELECT i.*, (SELECT concat( GROUP_CONCAT( id_stone ) )
FROM `tbl_stones_item`
WHERE `id_item` = i.id_item) AS `stones`
FROM tbl_items i
WHERE i.id_item = 1111;
Спустя 1 час, 16 минут, 25 секунд (15.09.2010 - 14:06) SlavaFr написал(а):
concat в общем был ненужен, так как BLOB в данном случае просто обычный стринг.
Спустя 56 минут, 45 секунд (15.09.2010 - 15:03) olya-kowka написал(а):
SlavaFr, понимаешь, он мне в столбце stones пишет не результат 22,33 , а так [BLOB 5 Байт].
Я нашла решение с помощью concat.
Я нашла решение с помощью concat.
Спустя 33 минуты, 47 секунд (15.09.2010 - 15:37) SlavaFr написал(а):
так это он так наверное в твоей программе пишет в которой ты запрос делала, в php запросе он бы выдал то что надо.
С другой стороны преоброзование блоба в стринг с помощью concat, тоже о.к.
С другой стороны преоброзование блоба в стринг с помощью concat, тоже о.к.
Спустя 15 минут, 8 секунд (15.09.2010 - 15:52) olya-kowka написал(а):
SlavaFr, это он мне пишет в phpMyAdmin.

Спустя 23 минуты, 37 секунд (15.09.2010 - 16:15) SlavaFr написал(а):
а в mysql_fetch_assoc писать не будет.
_____________
Столько дел...Не успеваю на все забить!!