|
|
|
| Делаю следующее, но берет только одну запись, а нужно для каждой из таблицы rieltor подсчетать кол-во записей в других таблицах.
SELECT COUNT(u.view) as Views, idrieltor,
(SELECT COUNT(idanswer) FROM rieltor_answers limit 1) as Answers,
(SELECT COUNT(status) FROM apartaments WHERE apartaments.status = 0 ) as Closed,
(SELECT COUNT(idrepresentative) FROM rieltor_representative WHERE idrepresentative = i.rieltor) as Agencies,
(SELECT COUNT(i.idapartaments) FROM apartaments where i.rieltor = u.idrieltor) as Objects
FROM rieltor u, apartaments i
|
| |
|
|
|
|
|
|
|
для: oli
(03.07.2013 в 20:59)
| | Пытаюсь сделать иначе:
(SELECT idrieltor FROM rieltor) as Id
UNION
(SELECT COUNT(apartaments.idapartaments)
FROM apartaments LEFT JOIN rieltor ON apartaments.rieltor = rieltor.idrieltor) AS NotesAll
UNION
(SELECT view FROM rieltor)
UNION
(SELECT COUNT(id) FROM rieltor_representative LEFT JOIN rieltor ON rieltor_representative.idrepresentative = rieltor.idrieltor) AS AgenciesAll
UNION
(SELECT COUNT(apartaments.idapartaments)
FROM apartaments LEFT JOIN rieltor rl ON apartaments.rieltor = rl.idrieltor AND apartaments.status = 0) AS NotesClosed
|
| |
|
|
|
|
|
|
|
для: OLi
(03.07.2013 в 21:39)
| | Дает такую ошибку:
#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 'as Id UNION (SELECT COUNT(apartaments.idapartaments)
FROM apartaments LEFT JO' at line 1
|
Буду разбираться | |
|
|
|
|
|
|
|
для: OLi
(03.07.2013 в 21:39)
| | У таблиц объединяемых UNION'ом алиасов не бывает | |
|
|
|
|
|
|
|
для: oli
(03.07.2013 в 20:59)
| | А зачем вы запихиваете 5 не связанных запросов в 1?
Все чего вы этим добиваетесь - это ошибки и абсолютная нечитаемость запроса!
У вас большие таблицы? Вы можете вручную пересчитать значения, которые выбираете? Я вам гарантирую, что там не те значения получаются. И не то количество раз.
Тут вообще какая-то невероятная каша. Особенно мне понравилось:
(SELECT COUNT(i.idapartaments) FROM apartaments where i.rieltor = u.idrieltor) as Objects
FROM rieltor u, apartaments i
| Как это?!
Подсчитать количество строк таблицы I по таблице А в которой значение из таблицы I равно значению из таблицы U....
Я вот даже не могу представить.....
Один крокодил летит на север, другой оранжевый. Сколько лет дедушке?
А вот это что?
SELECT COUNT(idanswer) FROM rieltor_answers limit 1
| Зачем лимит 1? Есть другие варианты?
И зачем это вообще засунуто в подзапрос???
---------------------------------------------------------------------------------------------------------------------------
Тут 5 отдельных запросов!
1.
SELECT COUNT(view) as Views, idrieltor FROM rieltor
| и то скорее всего имелось ввиду:
SELECT COUNT(view) as Views, idrieltor FROM rieltor GROUP BY idrieltor
|
2.
SELECT COUNT(idanswer) FROM rieltor_answers
|
3.
SELECT COUNT(status) FROM apartaments WHERE status = 0
|
4.
SELECT COUNT(idrepresentative)
FROM rieltor_representative r
JOIN apartaments a
ON r.idrepresentative = a.rieltor
|
А 5ый я не понимаю что должен считать.
И не нужно их объединять. | |
|
|
|
|
|
|
|
для: Sfinks
(03.07.2013 в 23:24)
| | Мне нужно это сделать одним запросом - в этом пока трудности | |
|
|
|
|
|
|
|
для: OLi
(05.07.2013 в 01:50)
| | Что значит нужно? Это учебная задача и так написано в условии? | |
|
|
|
|
|
|
|
для: Sfinks
(05.07.2013 в 08:35)
| | В задании сказано выполнить обращение к базе одним запросом | |
|
|
|
|
|
|
|
для: OLi
(06.07.2013 в 07:51)
| | Ну если "одним запросом" - это значит без возврата на клиент, то можно их объеденить UNION'ом
SELECT COUNT(view) as Views FROM rieltor
UNION ALL
SELECT COUNT(idanswer) FROM rieltor_answers
UNION ALL
SELECT COUNT(status) FROM apartaments WHERE status = 0
UNION ALL
SELECT COUNT(idrepresentative)
FROM rieltor_representative r
JOIN apartaments a
ON r.idrepresentative = a.rieltor
UNION ALL
-- то что вы хотели еще в 5ом запросе
|
| |
|
|
|
|
|
|
|
для: Sfinks
(06.07.2013 в 08:42)
| | Спасибо - в пятом запросе имелось ввиду:
SELECT COUNT( t1.idrepresentative ) AS SUM
FROM rieltor_representative t1
LEFT JOIN rieltor t2 ON t2.idrieltor = t1.idrepresentative
GROUP BY t1.idrepresentative
|
| |
|
|
|
|
|
|
|
для: OLi
(06.07.2013 в 09:13)
| | Получился такой запрос:
SELECT COUNT(view)AS count, idrieltor, 'views' FROM rieltor GROUP BY idrieltor
UNION ALL
SELECT COUNT(idanswer), idrieltor, 'answers' FROM rieltor_answers GROUP BY idrieltor
UNION ALL
SELECT COUNT(status), rieltor, 'closed' FROM apartaments WHERE status = 0 GROUP BY rieltoR
UNION ALL
SELECT COUNT(idrepresentative), idrepresentative, 'agencies'
FROM rieltor_representative r
JOIN apartaments a
ON r.idrepresentative = a.rieltor
|
Можно как-то упростить? | |
|
|
|
|
|
|
|
для: OLi
(07.07.2013 в 14:32)
| | > Получился такой запрос:
И не выдает ошибку? А должен бы....
> Можно как-то упростить?
Вроде все нормально.....
Но учтите, что такое допустимо только в учебной задаче, и только по тому, что так того требует условие.
В реальной жизни лучше выполнить 4 отдельных запроса.
Исключение составляет случай, когда у вас после выборки и юниона, на уровне СУБД происходит пост-обработка результата или сортировка. | |
|
|
|