![]() |
|
Модераторы: skyboy |
![]()
|
|
| Gold Dragon |
|
||||||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 2 Всего: 71 |
Есть две базы (уж извините что большой код выкладываю)
Выполняю запрос
Выдаёт мне две записи вместо одной
в чём моя ошибка? -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
||||||
|
|||||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 33 Всего: 161 |
Вы выполняете левое соединение, т.е. берете все содержимое таблицы zb_zontikbar_region и присоединяете к ней те значения таблицы zb_zontikbar, которые соответствуют критерию объединения. Т.о. вы получаете все содержимое таблицы регионов, к которому добавлен один зонтик бар, остальные значения зотникбара равны Null. Далее вы групируетесь по id_region. В результирующем наборе два значения id_region =1 и is null, т.о. вы получаете две группы. Для каждой из групп вы отображаете первые попавшиеся значения id,name. Для группы =1, которая имеет одну запись, первые попавшие оказываются достоверными, однако прогнозировать какие данные будут возвращены для второй группы, которая содержит более одной записи - дело не благодарное.
Ваш запрос не содержит ошибок. Он выполняет ровно то, что Вы ему указали. А так как Вы не потрудились изложить чего вы хотели добиться, остается только гадать. Очень вероятно что вы пытались написать этот запрос:
-------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 2 Всего: 71 |
Zloxa, большое спасибо что решил проблему и домыслил что я хотел
Добавлено через 8 минут и 22 секунды вот только маленькое замечание... Правильнее наверное будет писать не JOIN а RIGHT JOIN -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 33 Всего: 161 |
это зависит от того что вам нужно. Но опять таки, вы ведь держите это в секрете. в случае join, что есть суть inner join, вам не будут возвращены записи, для которых не найдено записей, соответствующих указанным Вами критериям соедения. В случае right join, Вы получите все значения таблицы zb_zontikbar_region, даже те, для которых не будет найдено соответствия. Это сообщение отредактировал(а) Zloxa - 18.12.2010, 18:02 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 2 Всего: 71 |
ну в любом случае спасибо... Я хоть теперь до конца разобрался что за зверь JOIN, а то раньше как обезьяна его только использовал
зы что-то сегодня у меня с объяснениями туго Есть таблица регионов и есть таблица ресторанов, где указывается регионы (ID). У меня есть фильтр, но чтобы не выводить все региона вот я и решил выводить только те которые используются во второй таблице Добавлено через 9 минут и 22 секунды а RIGHT потому что во второй таблице не может быть так чтобы в первой не было соответствия -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MySQL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |