![]() |
|
Модераторы: skyboy |
![]()
|
|
| dimcat |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 15.5.2007 Репутация: нет Всего: нет |
Подскажите, пожалуйста, каким образом обойти такую вещь:
Проблема в том, что соответствующей записи в table2 может и не быть... Соответственно, тогда запрос ничего не возвращает из-за поставленного WHERE... А нужно, чтобы результат был в любом случае. Но, как понимаете, если запись в table2 найдена, то user_id должен быть, который задан. Каким образом нужно поставить условие, чтобы выборка по user_id подключалась/не подключалась в зависимости от найденной/не найденной строки? Это сообщение отредактировал(а) skyboy - 19.7.2008, 21:30 |
|||
|
||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: нет Всего: 32 |
LEFT OUTER JOIN
|
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 1 Всего: 315 |
ну что значит должен быть результат? ты его хочешь, чтобы тебе пхп написал: строк нет?
так сделай так:
|
|||
|
||||
| dimcat |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 15.5.2007 Репутация: нет Всего: нет |
Feldmarschall, LEFT OUTER JOIN даёт в моём случае тот же эффект, что и left join.
bars80080, нет ты не понял... Подробнее... Немного расширю код для наглядности... Есть, к примеру таблица table1 с полями id и field и двумя записями id=1, field='value' и id=2, field='value2' И есть таблица table2 с полями id, user_id, field2 и одной записью id=1, user_id=1, field2='value3' Так вот мне нужно, чтобы в любом случае мой запрос возвращал две записи: получается, одна должна быть со значением value3, а другая просто с пустым значением
Это сообщение отредактировал(а) skyboy - 19.7.2008, 21:30 |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 15 Всего: 260 |
хоть это и некорректно(вносить условие, относящееся к одной таблице в секцию ON), но такой вариант:
ещё я бы поинтересовался задачей. потому как лично у меня потребнось в подобных запросах если и возникала, то "решалась" дополнительной нормализацией струтуры БД. |
|||
|
||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: нет Всего: 32 |
ладно, послушаем задачу.
пусть автор хоть немного потрудится. а то все за него делать: сообразить, что вопрос никак к пхп не относится, и поместить в соответствующий раздел. сообразить, что слова mysql_query ние относятся к SQL запросу, и писать их не надо. сообразить, что поставленных в описании условий недостаточно, и что в таблице table2 не одна запись, а две. с user_id=1 и с user_id=2 Это сообщение отредактировал(а) Feldmarschall - 19.7.2008, 10:50 |
|||
|
||||
| dimcat |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 15.5.2007 Репутация: нет Всего: нет |
Feldmarschall, если всё сказал, то пора бы сообразить, что это не тема не в том топике, а ты слегка не в теме... Если бы
skyboy, задача такова... Делаю раздел для футбольных прогнозов. В одной таблице находятся непосредственно матчи для прогнозирования, в другой прогнозы пользователей. Дословно запрос вот:
Этот запрос должен выводить все матчи для прогнозирования + если уже есть прогнозы от данного пользователя, то указывать их (spt_clubs и spt_towns - всего лишь названия клубов и городов и к делу непосредственного отношения не имеют). Получается, что во второй таблице прогноз пользователя на игру может как присутствовать так и нет, в зависимости от того, сделал ли он его... Пример работы здесь - http://spartak.tambovsport.ru/main.php?middle=prognos/index . Как видите запрос выводит только три записи, на которые есть прогнозы пользователя, а должен выводить восемь, 5 из которых просто с пустыми полями для ввода (вместо $_SESSION['us_id'] в запрос временно вставил 1)... Очень не хотелось бы добавлять дополнительный запрос, нагрузка на базу и так значительная... Это сообщение отредактировал(а) skyboy - 19.7.2008, 21:32 |
||||
|
|||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: нет Всего: 32 |
Куда смотрит администрация. Опять хамят.
Не умеет задачу описать: под условие прекрасно подходит запрос
А когда его поправляют - начинаются поучения. Сам не может отличить пхп от SQL и рекомендации более опытыных товарищей не слушает. Демонстративно продолжает использовать подсветку РНР. Прошу принять меры. |
|||
|
||||
| Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 2 Всего: 42 |
Тебе уже сказали LEFT OUTER JOIN. Добавлено через 1 минуту и 26 секунд Пора уже штрафы за глупость с гонором выписывать. -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: нет Всего: 32 |
Fortop, аутер-то аутер, но не просто, а по условию, которое написал skyboy,
|
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 15 Всего: 260 |
dimcat, так скажи, решился вопрос или нет?
-- А теперь - нагоняй. dimcat, ты не прав трижды. 1. если тебе делают замечание по существу, либо аргументировано возражай по существу, либо молчи. Рот никому затыкать не надо. 2. если у тебя вопрос о SQL-запросе, размещай тему не в разделе "РНР", а в разделе "Составление SQL-запросов" с указанием СУБД и её версии. 3. Опять же, если у тебя вопрос по SQL, то потрудись выбросить из кода РНР-конструкции и выбрать тип подсветки "SQL". В следующий раз делать это за тебя не буду.
Иногда - отдыхает от трудовых будней. |
|||
|
||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: нет Всего: 32 |
skyboy, я потестил - вроде, делает, что ему нужно.
|
|||
|
||||
| dimcat |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 15.5.2007 Репутация: нет Всего: нет |
Да, спасибо, работает.
skyboy, соглашусь по 2 и 3 пунктам обвинений Не знал, что есть отдельный топ для БД, поэтому и поместил в PHP: БД. Не видел выборки у поля с кодом. Теперь знаю и вижу. По п1. Если бы мне сделали замечание, нормально и не высокомерно указали на то, что я делаю неправильно, то и отреагировал бы я спокойно. Feldmarschall, задачу описываю как умею. И не хамлю, а отвечаю тоном подобным твоим пафосным постам.
1. Делать здесь что бы то ни было за кого бы то ни было насильно тебя никто не заставляет... 2. Ты понятия не имеешь о том, что, чем и сколько раз я делаю и много или немного я для этого тружусь. 3. Мне не нужно было, чтобы сделали за меня, а всего лишь подсказали способ. Fortop, за твой пост кому штраф выписывать будем? Как бы там ни было, ещё раз спасибо. На самом деле не знал, что можно так ставить условие. Это сообщение отредактировал(а) dimcat - 20.7.2008, 01:46 |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Составление SQL-запросов | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |