|
|
|
Сделать COUNT в двух таблицах
|
|||
|---|---|---|---|
|
#18+
Имею базу недвижимости , незнаю как подсчитать сколько есть объектов недвижимости(property) в каждом городе(town), с определенным количеством комнат(bedroom) Пробую делать так: SELECT town.id, town.name, count(property.id) as prop_num FROM property, town, bedroom WHERE property.id=bedroom.property_id AND property.town_id=town.id GROUP BY town.id, property.id HAVING count(bedroom.id)>=1 неработает, как сделать правильный запрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2005, 17:06:05 |
|
||
|
Сделать COUNT в двух таблицах
|
|||
|---|---|---|---|
|
#18+
Как он не работает? в чем выражается его нерабочесть? Какая версия сервера? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2005, 19:24:16 |
|
||
|
Сделать COUNT в двух таблицах
|
|||
|---|---|---|---|
|
#18+
Нерабочесть в том, что если группирую по GROUP BY town.id тогда не правильно считается HAVING count( bedroom.id ), если же группирую по GROUP BY property.id, вываливает несгруппированные города, как тогда подсчитать сколько объектов в каждом городе? Пример Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2005, 20:29:26 |
|
||
|
Сделать COUNT в двух таблицах
|
|||
|---|---|---|---|
|
#18+
Насколько я понял - то вопрос вот это "как тогда подсчитать сколько объектов в каждом городе?" Считать нужно от городов, т.е. от таблицы городов, цеплять на них левым объединением комнаты и считать их сумму. Группировать по ключу города, города ни с кем больше не соединять, чтобы не было лишнего мнодителя в произведении строк таблиц. Может непонятно, но сильно влом писать твой запрос так как ты хочешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2005, 20:35:56 |
|
||
|
Сделать COUNT в двух таблицах
|
|||
|---|---|---|---|
|
#18+
насколько я понимаю здесь подзапросов не разберешься? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2005, 20:36:04 |
|
||
|
Сделать COUNT в двух таблицах
|
|||
|---|---|---|---|
|
#18+
vixhнасколько я понимаю здесь подзапросов не разберешься? да нет же, при чем тут подзапросы. Если не получается на обычных объединених, тогда что-то можно выложить в подзапрос, либо представить как derived table ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2005, 20:37:25 |
|
||
|
Сделать COUNT в двух таблицах
|
|||
|---|---|---|---|
|
#18+
Считать нужно от городов, т.е. от таблицы городов, цеплять на них левым объединением комнаты и считать их сумму. Как же комнаты прицепить к городам когда эти таблицы совсем не связаны? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2005, 20:39:42 |
|
||
|
Сделать COUNT в двух таблицах
|
|||
|---|---|---|---|
|
#18+
вот что я сделал: Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2005, 20:41:44 |
|
||
|
Сделать COUNT в двух таблицах
|
|||
|---|---|---|---|
|
#18+
извиняюсь за невнимательность как это нет линков от городов к комнатам - конечно есть - через таблицу property, вот и объединяй комнаты на property левым объединением тоже а в where оставь только агента, например так SELECT town.id, town.name, count(distinct(bedroom.id)) as CountB FROM town LEFT JOIN property ON town.id = property.town_id LEFT JOIN bedroom b ON property.id = bedroom.property_id WHERE `agent_id` = '7' GROUP BY town.id HAVING countB>0; вот вытаскивать сюда еще и номер свойства нет смысла, т.к. их как раз будет несколько и они вносят дисбаланс в результат запроса... раскрыта тема запроса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2005, 20:50:17 |
|
||
|
Сделать COUNT в двух таблицах
|
|||
|---|---|---|---|
|
#18+
К сожалению нет( Результат твоего запроса аналогичен все предидущим. Проблема вся в том, что если группировать по городу, он подсчитывает сколько комнат есть для всех объектов недвижимости этого города. Тоесть я не могу отфильтровать результат скажем для объектов с одной комнатой. Если я сгруппирую по объектам тогда не подсчитаю сколько их в каждом городе, он мне вываливает сктолько раз каждый город сколько есть в нем объектов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2005, 21:00:16 |
|
||
|
Сделать COUNT в двух таблицах
|
|||
|---|---|---|---|
|
#18+
вот к примеру результат если группировать по городу объектов id name count( bedroom.id) 9 3 Norths 18 5 5 Edi 15 6 6 Westwood 9 а вот когда группирую по объекту 1 3 Norths 2 1 3 Norths 2 1 5 Edi 3 1 5 Edi 3 1 5 Edi 3 1 5 Edi 3 1 6 Westwood 1 1 6 Westwood 1 1 6 Westwood 1 1 6 Westwood 1 1 6 Westwood 1 1 3 Norths 1 1 3 Norths 1 1 3 Norths 1 1 3 Norths 1 1 3 Norths 2 1 3 Norths 3 1 3 Norths 5 1 5 Edi 3 1 6 Westwood 4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2005, 21:03:44 |
|
||
|
Сделать COUNT в двух таблицах
|
|||
|---|---|---|---|
|
#18+
Напиши, что ты хочешь получить внятно пожалуйста.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2005, 21:09:59 |
|
||
|
Сделать COUNT в двух таблицах
|
|||
|---|---|---|---|
|
#18+
хочу сделать вот что подсчитать сколько есть объектов с одной комнатой в каждом городе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2005, 21:13:06 |
|
||
|
Сделать COUNT в двух таблицах
|
|||
|---|---|---|---|
|
#18+
Ушел домой, завтра отвечу.... Так бы и сразу, а то, чего он не работает :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2005, 21:14:26 |
|
||
|
Сделать COUNT в двух таблицах
|
|||
|---|---|---|---|
|
#18+
OK, буду ждать. Как мне кажется тут без IF не обойдешься. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2005, 21:19:06 |
|
||
|
Сделать COUNT в двух таблицах
|
|||
|---|---|---|---|
|
#18+
Попробуй SELECT town.id,property.id, town.name, count(distinct(bedroom.id)) as CountB FROM town LEFT JOIN property ON town.id = property.town_id LEFT JOIN bedroom b ON property.id = bedroom.property_id WHERE `agent_id` = '7' GROUP BY town.id, property.id HAVING countB>0; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2005, 19:59:50 |
|
||
|
Сделать COUNT в двух таблицах
|
|||
|---|---|---|---|
|
#18+
неа так не работает( результат тот же, что просто группироавть по городу без группировки по property.id ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 11:40:28 |
|
||
|
Сделать COUNT в двух таблицах
|
|||
|---|---|---|---|
|
#18+
vixhнеа так не работает( результат тот же, что просто группироавть по городу без группировки по property.id не может быть, чтобы результирующий набор был одинаков при группировке по городу и по городу+по проперти на 100% Что-то ты не то говоришь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 12:13:01 |
|
||
|
Сделать COUNT в двух таблицах
|
|||
|---|---|---|---|
|
#18+
может быть сомтри , если хочешь я тебе могу дамп базы дать, попробуешь у себя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 12:18:43 |
|
||
|
Сделать COUNT в двух таблицах
|
|||
|---|---|---|---|
|
#18+
Задачу я вроде понял, подсчитать кол-во квартир по городу и проперти, забыл что оно обозначает, но тем не менее. Дай дамп этой пары таблиц, я погоняю у себя в тестовой базе, приаттач. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 12:31:35 |
|
||
|
Сделать COUNT в двух таблицах
|
|||
|---|---|---|---|
|
#18+
Дамп приатаченный, там только три таблички, думаю другие здесь не важны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 12:41:08 |
|
||
|
Сделать COUNT в двух таблицах
|
|||
|---|---|---|---|
|
#18+
На тебе ))))) Код: plaintext 1. 2. 3. 4. 5. 6. 7. ------------------------------- www.free-lancer.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 13:54:38 |
|
||
|
Сделать COUNT в двух таблицах
|
|||
|---|---|---|---|
|
#18+
Честно скажу, не понял вопроса, но почему то решил ответить Сорри если не то ... ------------------------------- www.free-lancer.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 13:55:17 |
|
||
|
Сделать COUNT в двух таблицах
|
|||
|---|---|---|---|
|
#18+
Да это так, НО версия моего сервера 4.0 подзапросы не работают( Я бы срадостью перешол на новую, но и у хостера 4.0 ( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 13:59:01 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=33261290&tid=1853685]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
178ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 220ms |
| total: | 486ms |

| 0 / 0 |
