powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Исключить одинаковые
8 сообщений из 8, страница 1 из 1
Исключить одинаковые
    #39355803
flyboard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть две таблицы:

table1

id name1
1 Andrei
2 Vasya
3 Sergei
4 Petr

table2
id name2
1 Andrei
2 Petr

Как сделать выборку по 1 таблице, но показать, только те которых нет во второй.
Т.е нужен результат Vasya, Sergei.
...
Рейтинг: 0 / 0
Исключить одинаковые
    #39355818
paver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
flyboard,

строки из связки таблиц по LEFT JOIN, у которых name2 IS NULL
...
Рейтинг: 0 / 0
Исключить одинаковые
    #39355822
flyboard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
paver,

А если у нас в table2 запись такая
id name2 desc
1 Andrei OK
2 NORM
...
Рейтинг: 0 / 0
Исключить одинаковые
    #39355827
flyboard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
flyboardpaver,

А если у нас в table2 запись такая
id name2 desc
1 Andrei OK
2 NORM

Т.е нету у второй записи name2
...
Рейтинг: 0 / 0
Исключить одинаковые
    #39355838
paver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
flyboard, вспомнилось из классики: "Когда вы говорите, Иван Васильевич..."

Вот это достаточно прочитать, там даже пример есть
http://mysqlru.com/reference/data-manipulation/select/join.html
...
Рейтинг: 0 / 0
Исключить одинаковые
    #39355841
flyboard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дополню

Две таблицы

table1

id name1
1 Andrei
2 Vasya
3 Sergei
4 Petr

table2

id name2 desc date
1 Andrei OK 2016-11-01
2 * NORM 2016-11-01
3 Andrei OK 2016-11-02

Вывод должен быть с такими параметрами:
Покажи каких table1.name1 нету в table2.name2, а table2 еще примени WHERE date = '2016-11-01'.

Vasya, Sergei, Petr.

Пробую так:
SELECT table1.*, table2.name2, table2.date FROM table1 LEFT JOIN table2 ON table1.name1 = table2.name2 WHERE date = '2016-11-01'

Он выводит наоборот где совпало Andrei .
...
Рейтинг: 0 / 0
Исключить одинаковые
    #39355892
flyboard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может будет полезно, решил так

SELECT table1.name1 AS asd FROM table1 WHERE table1.name1 NOT IN(SELECT table2.name2 FROM table2 WHERE table2.date = '2016-11-01')
...
Рейтинг: 0 / 0
Исключить одинаковые
    #39356505
paver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
flyboard,
в тексте по моей ссылке дословно
авторЕсли запись для правой таблицы в частях ON или USING в LEFT JOIN не найдена, то для данной таблицы используется строка, в которой все столбцы установлены в NULL. Эту возможность можно применять для нахождения результатов в таблице, не имеющей эквивалента в другой таблице :

mysql> SELECT table1.* FROM table1
LEFT JOIN table2 ON table1.id=table2.id
WHERE table2.id IS NULL;

Этот пример находит все строки в таблице table1 с величиной id, которая не присутствует в таблице table2 (т.е. все строки в table1, для которых нет соответствующих строк в table2).
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Исключить одинаковые
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]