$sql = 'SELECT `title`, `description`,(SELECT `text` FROM `block` WHERE block.page_id = pages.id) `content` FROM `pages`,`block`';
такая вот ошибка:
Database query failed: Subquery returns more than 1 row
Что сделать чтоб в поле content попали записи(их несколько) из block.text?
ps строчке из таблицы pages соответствует несколько строчек из таблицы block
Спустя 10 минут, 20 секунд (26.04.2012 - 18:10) vital написал(а):
Cделать LEFT JOIN.
Спустя 5 минут, 14 секунд (26.04.2012 - 18:15) dvs написал(а):
Думал об этом, но тогда если сточке из page соответствует к примеру 3 сторочки из block, то после соединения будет 3 строчки, а нужна одна. Может конечно я что не понимаю в LEFT JOIN редко им пользовался
Спустя 52 минуты, 26 секунд (26.04.2012 - 19:08) johniek_comp написал(а):
или union()
Спустя 10 часов, 58 минут, 55 секунд (27.04.2012 - 06:07) dvs написал(а):
все гораздо проще оказывается, вот чего мне не хватало GROUP BY pages.id
Спустя 4 часа, 45 минут, 7 секунд (27.04.2012 - 10:52) vagrand написал(а):
Убери подзапрос, сделай LEFT или INNER JOIN (в зависимости от того всегда ли в таблице block есть записи соответствующие записям в таблице pages) и сделай group by в основном запросе.
Спустя 6 часов, 29 минут, 8 секунд (27.04.2012 - 17:21) ИНСИ написал(а):
Попробуй так
SELECT `c`.`id`, `c`.`title`, `c`.`description`,`b`.`text`
FROM `content` AS `c`
LEFT JOIN `block` AS `b`
ON `b`.`page_id` = `c`.`id`
Спустя 1 минута, 22 секунды (27.04.2012 - 17:22) ИНСИ написал(а):
Если хочешь со своим запросом, то попробуй так:
SELECT `id`, `title`, `description`, `content`, (SELECT `text` FROM `block` WHERE `page_id` = `p`.`id` LIMIT 1) FROM `pages` AS `p`
Спустя 3 часа, 59 минут, 53 секунды (27.04.2012 - 21:22) dvs написал(а):
я справился уже, тема закрыта, всем спасибо! От под запроса избавился конечно как только узнал про GROUP BY pages.id имено его мне и не хватало чтоб воспользоваться LEFT JOIN