SELECT order.id, order.cntpt, order.gen_expens, order_productions.prod_name
FROM `order`
LEFT JOIN `order_productions` ON order.id = order_productions.order_id
Возвращает вот такой результат:
Array
(
[id] => 13
[cntpt] => Заказчик
[gen_expens] => 1
[order_cost] => 2
[cur_payment] => 0
[payment_type] => Нал.
[date_form] => 1293089627
[death_line] => 1291323600
[prod_name] => изготовление логотипа
)
Array
(
[id] => 13
[cntpt] => Заказчик
[gen_expens] => 1
[order_cost] => 2
[cur_payment] => 0
[payment_type] => Нал.
[date_form] => 1293089627
[death_line] => 1291323600
[prod_name] => Визитные карточки
)
Как видно все данные повторяются кроме последних. Это потому что в таблице order_productions имеются 2 записи о продуктах, которые относятся к одному заказу order.id.
Вот и я хотел узнать, это нормально, что возвращается такой результат?
На самом деле нужно, что бы вернулся один массив в котором будут два [prod_name].
Вот как то так. Хочу узнать можно ли это средствами sql делать или же на php нужно сливать массивы.
Спасибо!
Спустя 29 минут, 17 секунд (23.12.2010 - 11:37) linker написал(а):
Используй PHP.
Спустя 23 часа, 22 минуты, 4 секунды (24.12.2010 - 10:59) ApuktaChehov написал(а):
Возникла еще одна проблема.
Получается что я делаю выборку. Выбираю 3 заказа. Возвращается 3 результата.
Но если в другой таблице несколько записей для одного заказа, то возвращается не 3 результата, а больше. Но выборку я делаю только по первой таблице!
А как же быть с LIMIT?
Получается что LIMIT применяется ко обоим объединенным таблицам. А нужно чтобы применялся только к первой.
Получается что я делаю выборку. Выбираю 3 заказа. Возвращается 3 результата.
Но если в другой таблице несколько записей для одного заказа, то возвращается не 3 результата, а больше. Но выборку я делаю только по первой таблице!
А как же быть с LIMIT?
Получается что LIMIT применяется ко обоим объединенным таблицам. А нужно чтобы применялся только к первой.
Спустя 58 минут, 14 секунд (24.12.2010 - 11:57) linker написал(а):
LIMIT применяется ко всему результату выборки, а не к чему-то конкретному.
Спустя 5 минут, 38 секунд (24.12.2010 - 12:03) ApuktaChehov написал(а):
Это я понял.
Но мне нужно выбрать, к примеру, 5 строк из первой таблицы и присоединить к этому строки из другой таблицы, где id из первой таблицы, равен id из второй.
Не в цикле же делать эти выборки...
Я не знаю как быть.
Но мне нужно выбрать, к примеру, 5 строк из первой таблицы и присоединить к этому строки из другой таблицы, где id из первой таблицы, равен id из второй.
Не в цикле же делать эти выборки...
Я не знаю как быть.

Спустя 2 часа, 40 минут, 33 секунды (24.12.2010 - 14:43) linker написал(а):
Вложенные запросы тебе помогут.
Спустя 26 минут, 42 секунды (24.12.2010 - 15:10) SlavaFr написал(а):
1) Если в ты используеш mysql, то первый вопрос решается гдето так:
SELECT
o.id,
o.cntpt,
o.gen_expens,
( select GROUP_CONCAT(order_productions.prod_name) from `order_productions`
where o.id = order_productions.order_id group by order_productions.order_id) аs prnamen
FROM `order` аs о
Спустя 6 часов, 13 минут, 43 секунды (24.12.2010 - 21:24) ApuktaChehov написал(а):
Спасибо всем большое.
_____________