Xpoint
   [напомнить пароль]

Mysql:многотабличный запрос

Метки: [без меток]
2009-08-18 21:30:51 [обр] DekaR[досье]

Добрый вечер.Простой вопрос.Я не силён в mysql Поэтому поставил меня у тупик :

  $q="SELECT * FROM `prod_names` where `parent`=(Select `id` from `prod_group` where `parent`=$rublic) order by `name`  LIMIT $sh,50";
   $q2="SELECT count(*)  FROM `prod_names` where `parent`=(Select `id` from `prod_group` where `parent`=$rublic) order by `name`"; 
   $c=mysql_query($q); $d=mysql_query($q2);
   echo mysql_error();

Выводит:

Subquery returns more than 1 row

Но позпарос и должен возвращать несколько строк.Смысл в том,что мы выделяем из таблицы names Все записи,у которых родитель - один из списка возвращенного подзапросом.Как сделать правильно ?

спустя 7 минут [обр] DekaR[досье]

Нашел. Нужно так :
 $q="SELECT * FROM `prod_names` where `parent` IN (Select `id` from `prod_group` where `parent`=$rublic) order by `name` LIMIT $sh,50";

Тогда ещё вопрос...У меня первый запрос берет требуемое колличество записей,а второй считает сколько их всего.Я понимаючто два практически одинаковых запроса это не дело...Что то мне подсказывает что можно их объеденить используя GROUP или HAVING,но как -я не знаю.Подскажите пожалуйста

спустя 26 минут [обр] Dennis F. Latypoff aka funky_dennis(4/78)[досье]
причем тут PHP?
спустя 11 часов [обр] Филипп Ткачев(20/112)[досье]

Примерно так (не проверял):

SELECT * FROM `prod_names`
INNER JOIN `prod_group` ON (`prod_names`.`parent` = `prod_group`.`id`)
WHERE  `prod_group`.`parent`=$rublic
ORDER BY `name`  LIMIT $sh,50

Рекомендую почитать http://dev.mysql.com/tech-resources/articles/hierarchical-data.html

спустя 6 дней [обр] brateev[досье]
сообщение промодерировано
попоробовал:
SELECT * FROM `prod_names`
INNER JOIN `prod_group` ON (`prod_names`.`parent` = `prod_group`.`id`)
WHERE `prod_group`.`parent`=$rublic
ORDER BY `name` LIMIT $sh,50
вроде получилось
спустя 10 часов [обр] Dennis F. Latypoff aka funky_dennis(4/78)[досье]
угу, а причем тут PHP?
Powered by POEM™ Engine Copyright © 2002-2005