![]() |
|
Модераторы: skyboy |
![]()
|
|
| aktuba |
|
|||
![]() Смышленный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1915 Регистрация: 24.4.2006 Где: Планета Земля Репутация: нет Всего: 38 |
Есть такой запрос:
В базе только одна запись за 05.03.2010. В теории, stat_1.hosts должен быть равен stat_4.hosts. Но это только в теории. А вот в результате: hosts1 2288 hits1 69172 hosts2 0 hits2 0 hosts3 9152 hits3 276688 hosts4 128128 hits4 3873632 hosts5 NULL hits5 NULL hosts6 128128 hits6 3873632 Изначально казалось, что цифры вообще с потолка... Но, если присмотреться, можно заметить вот такую закономерность: hosts3 = hosts1 * 4 hits3 = hits1 * 4 hosts4 = hosts3 * 14 hits4 = hits3 * 14 Т.е., следующие данные зависят от предыдущих. И вот этого я понять не могу - почему запрос работает так? Почему он не работает так, как должен в теории? Помогите plz разобраться и составить правильный запрос... -------------------- ![]() |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 33 Всего: 161 |
Не утверждайте, что нашли ошибку Вам следует переоценить степень своего владения "теорией". Не понятно одно - Вы действительно хотите чтобы вам на форуме объяснили как работает join лучше чем это написано в книшке вроде "SQL для чайников"? Если мы соединяем три набора данных. В одном одна запись, в другом две, в третьем три - сколько должно быть записей в результате? 1*2*3=6. Т.е. каждая запись каждого из набора будет сочетаться с каждой записью другого набора. и если мы будем применять аггрегат к полям второго набора, надо быть готовым, что он умножится на 3 и на 1 - количества записей в первом и третьем наборе. уберите группировку, посмотрите что имеете в результате объединения. Описывайте цель, а не отдельный шаг Приведенный вами запрос написан на формальном языке и безошибочен. Он вполне соответствует понятию "правильный". Судя по всему он дает не правильный результат, но Вы ж, мля нихрена не сказали о том, какой результат по Вашему должен быть правильным!
Это сообщение отредактировал(а) Zloxa - 8.3.2010, 00:16 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| aktuba |
|
|||
![]() Смышленный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1915 Регистрация: 24.4.2006 Где: Планета Земля Репутация: нет Всего: 38 |
Так может стоит прочесть, что было написано изначально: Но, даже есть идти по вашим рассуждениям - почему ДАННЫЕ(!!!) должны перемножаться? При чем тут разное количество записей? Без группировки запрос вообще работать не будет... Можно даже не проверять. Цель простая - получить данные для "проектов" за разные промежутки времени. Проектов может быть много, промежутков - 6. Делать запросы в цикле считаю неразумным... Поэтому и сделал через join-ы, но тут какая-то непонятная засада... Как это не сказал? А это что тогда???
Видимо, у кого-то плохое настроение... Может тогда лучше пойти поспать, чем ахинею всякую нести??? P.S.: а за запрос - СПАСИБО! Работает, вроде, как надо... Но хотелось бы все-же понять, что не так в моем запросе... Это сообщение отредактировал(а) aktuba - 6.3.2010, 00:50 -------------------- ![]() |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 33 Всего: 161 |
ДУМАЙ, БЛИН!!!! Я расписал. Если у тебя число "два", в результате джойна "размножилось" на три строки, сколько ты получишь суммируя все строки с числом "два"? а сколько записей за 04.03.10, dt >= "2010-03-01" AND dt <= "2010-03-05" и т.д. п-п-ц. убрать груп бай, закоментить селект лист и поставить там жирную звездочку и изучить что ж ты группируешь - высшая математика - не для среднего ума. как будто бы мне это надо. Это сообщение отредактировал(а) Zloxa - 6.3.2010, 11:24 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| aktuba |
|
||||
![]() Смышленный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1915 Регистрация: 24.4.2006 Где: Планета Земля Репутация: нет Всего: 38 |
Да блин! Написал же - ТОЛЬКО ОДНА ЗАПИСЬ В БАЗЕ! И дата этой записи - 05.03.10. ВСЕ! Нет больше записей.
Охрененный ответ. Спасибо, млять... Лучше бы ты вообще ничего не писал, чем так... Как по твоему - почему люди приходят на форум и задают вопросы? Они что, БЛЯТЬ, должны всё на свете знать??? Сможешь перебрать боллид F1? Это же так просто - открутить пару тысяч гаек и закрутить потом! НАХРЕНА нужны такие ответы, как твои??? -------------------- ![]() |
||||
|
|||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
Не "одна запись в базе", а одна запись в таблице. Если таблицу, где есть одна запись, сджойнить с таблицей, где этой записи соответствуют несколько - в результирующем наборе будет несколько записей. И при группировке получим кратное умножение. В твоём частном случае это 56 - это произведение количества записей в остальных таблицах, которые соответствуют этой твоей "одной записи". Имея статус "смышлёный", можно было бы это понять и из предыдущих сообщений. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 33 Всего: 161 |
Чтобы таких вопросов, как твои, впредь было меньше. Чтобы в твоих вопросах впредь было меньше типовых ошибок вопрошающих. Чтобы задавая вопрос, ты, впредь думал не о самолюбовании, мол "я тут такой крутой перец, все по науке делаю, а оно - гуано бажное", а когда тебе предлагают что то попробовать, выпендрежно заявлять "не стоит и пытаться". Чтобы задавая вопрос, ты, впредь, проявлял уважение к отвечающим, позаботившись о достаточности материала для ответа. Чтобы задавая дополнительный вопрос впредь ты бы убедился, что ответа на него действительно не было в предыдущем ответе. Чтобы получив ответ, ты хотябы попытался понять, что именно тебе пытались донести. Когда я тебе предложил убрать группировку, если ты не понял как это сделать, наверное следовало бы о том спросить, а не высокомерно утверждать что мое предложение абсурдно. В этом контексте, по твоему, я c тобой был не адекватно резок? Это сообщение отредактировал(а) Zloxa - 7.3.2010, 16:06 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| aktuba |
|
|||
![]() Смышленный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1915 Регистрация: 24.4.2006 Где: Планета Земля Репутация: нет Всего: 38 |
Думаешь? Есть еще одна запись в таблице tbl_projects. ВСЕ! Итого: одна запись в tbl_advert_stat и одна в tbl_projects. Откуда 56 взялось??? -------------------- ![]() |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
Не верю. Сделай запрос без группировки и агрегатных функций - сколько получишь записей? -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 33 Всего: 161 |
если это действительно так, то ты действительно, наверное, столкнулся с багом. Если ты действительно столкнулся с багом, то вопрос "почему так" на этот форум - риторический. Воркэраунд ты, вроде как уж нашел. Тему можно бы и закрыть. Однако ж мне, лично, кажется более вероятным, что ты гдето чтото не так смотришь. Иначе, ты бы смог симптоматику продемонстрировать так, чтобы ни у кого сомнений не возникло. Добавлено через 7 минут и 55 секунд
либо в этот же запрос добавить count(*) -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MySQL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |