Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте.
Есть две таблицы:
1) CREATE TABLE `table1` (
`table1_id` INT NOT NULL
) TYPE = MYISAM ;
2. CREATE TABLE `table2` (
`table1_id` INT NOT NULL,
`table2_id` INT NOT NULL
) TYPE = MYISAM ;
Требуется выполнить следующий запрос:
SELECT table1_id, (SELECT COUNT( * ) FROM table2 WHERE table1.table1_id = table2.table1_id) AS res
FROM table1
Пишет ошибку (#1064 - You have an error in your SQL syntax). Версия Mysql 4.1
Как обойти?
Неактивен
Подробнее ошибку приведите
Неактивен
И заодно - чем плохо вот так?
Неактивен
Так пишет след. ошибку:
#1052 - Column: 'table1_id' in field list is ambiguous
По поводу первого запроса:
#1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT COUNT( * ) FROM table2 WHERE table1.table1_id = table2.t
Работает след. образом:
SELECT table1.table1_id, COUNT( table2.table1_id ) AS res
FROM table1 LEFT JOIN table2
ON table1.table1_id = table2.table1_id
GROUP BY 1
А если у меня есть еще таблица из которой нужно вывести кол-во записей:
3. CREATE TABLE `table3` (
`table1_id` INT NOT NULL,
`table3_id` INT NOT NULL
) TYPE = MYISAM ;
И в результате нужно:
SELECT table1_id,
(SELECT COUNT( * ) FROM table2 WHERE table1.table1_id = table2.table1_id) AS res,
(SELECT COUNT( * ) FROM table3 WHERE table1.table1_id = table3.table1_id) AS res2
FROM table1
Отредактированно DmitriyZ (27.11.2008 11:36:18)
Неактивен
Неактивен
Так как все-таки еще одну таблицу прикрепить?
Неактивен
SELECT table1.table1_id, COUNT(table2_id) AS res, COUNT(table3_id) AS res2
FROM table1
JOIN table2 USING (table1_id)
JOIN table3 USING (table1_id)
GROUP BY 1;
Неактивен
Я уже так пробывал.
выводит в res и res2, как результат res*res2
Неактивен
Да, действительно Тогда только подзапросом
Неактивен