- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Тренды маркетинга в 2024 году: мобильные продажи, углубленная аналитика и ИИ
Экспертная оценка Адмитад
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Здраствуйте всем, уважаемые господа:)
сразу к делу. Ситуация такая...(при описании задачу упростил, чтобы было понятнее, но смысл тот же). Итак..
Есть две таблицы.
таблица 1
id | id3 | info
таблица 2
id2 | id3 | count
далее. одной записи в 1 таблице может принадлежать несколько записей из второй.
Так вот, мне надо соединить эти две таблицы, НО! не все так просто....
Так вот надо чтобы если во второй таблице нет записи со значением например count=3, соответствующую записи в таблице 1, То запись из таблицы 1 выбиралась всеравно, но при этом значение count из второй таблицы было равно NULL.
Простой пример, чтобы лучше понять.
таблица 1.
id | id3 | info
-------------
45| 1 | myInfo
таблица 2.
id2 | id3 | count
---------------
1 | 1 | 24
2 | 1 | 46
3 | 1 | 2
Итак если сделать запрос запрос:
SELECT table1.*, table2.count......WHERE table1.id2=table2.id2 AND table1.id=45 AND table2.count=3
ничего не выведится.
НО мне надо сделать так, чтобы выводилась инфа первой таблицы. А поля второй таблицы были NULL если там нет соответсвий условиям (Т.е. случай, который описал выше).
Надеюсь задача ясна:)
SELECT table1.*, table2.count......WHERE table1.id2=table2.id2 AND table1.id=45 AND table2.count=3
Не очень понял как вы соединяете. Но то что вы написали это inner join, а вам нужен left join
SELECT
t1.id,
t1.id3,
t1.info,
t2.count
FROM table1 t1
LEFT JOIN table2 t2 ON t1.id3=t2.id3
WHERE t1.id=45 AND t2.count=3
НЕ робит.
Прикол в том, что соответствующие записи с условием t1.id3=t2.id3 есть. но с условием t2.count=3 нет.
Если бы записей во второй таблице с условием t1.id3=t2.id3 не было, то вывелась бы запись из первой таблицы, а из второй занчения NULL.
Незнаю почему, но работает именно так
Если бы записей во второй таблице с условием t1.id3=t2.id3 не было, то вывелась бы запись из первой таблицы, а из второй занчения NULL.
Незнаю почему, но работает именно так
Это вообще как. Можно запрос ваш в студию, и что выдает
Запрос:
SELECT t1.id,t1.id3,t1.info,t2.count FROM t1 LEFT JOIN t2 ON t1.id3=t2.id3 WHERE t1.id=1 AND t2.count=1 OR t2.count IS NULL
Все так и есть. Вот только что создал такую таблицу, сделал запрос при одном и другом случае. И все так есть как я и писал.
OR t2.count IS NULL
Вот это не понял к чему
к тому, что когда во второй таблице нет соответсвий работает именно так. если убрать, то выборки не будет.
мдамс...чтото после стольких моих мучений, мне почемуто начинает казаться, что то что я хочу неосуществимо:(
мдамс...чтото после стольких моих мучений, мне почемуто начинает казаться, что то что я хочу неосуществимо:(
Да осуществимо точно, просто надо понять все до конца. Напишите пример с таблицами побольше
Дамп примера.
Запрос:
Делаем запрос - ничего.
Удаляем из таблицы t2 запись с id2=6. Делаем запрос снова - все гуд.
Короче я все равно не вьезжаю что надо в итоге получить))
Попробуй это:
Вот count = 3 нету, вернуло NULL. Так?