Выберите значения, которых нет в другой таблице, в MYSQL - PullRequest
0 голосов
/ 24 февраля 2020

Я хочу иметь возможность выбирать людей в таблице 1, которые не давали или не просили ID # 1 (Jud) для кредитов. МОИ 2 таблицы.

table 1
----------------------
id*|name|adress
1  |jud |pipi #5
2  |john|yoba #45
3  |jan |stackyflow 54
4  |Song|doesnt matter street 98

Table 2
-------------
*id|asked_loan|gave_loan
1  |1         |2
2  |1         |3

В этом случае я хочу получить только строку Таблицы №4, которая:

4  |Song|doesnt matter street 98

Что я пробовал:

SELECT DISTINCT `id`,`name`,`adress`
FROM `TABLE1`
LEFT JOIN `TABLE2` ON TABLE1.asked_loan = TABLE1.id
WHERE `asked_loan` !=1 AND `gave_loan` !=1

Моя проблема: Поскольку я оставлен в процессе объединения, две таблицы соединяются вместе, поэтому пользователи, отсутствующие в TABLE2, не будут отображаться.

Резюме: Я хочу иметь возможность выбирать пользователей, которые не предоставили или не получили (TABLE1 id) # 1 кредит

Ответы [ 2 ]

0 голосов
/ 24 февраля 2020

Один вариант будет использовать NOT EXISTS -

SELECT *
  FROM table1 t1
 WHERE NOT EXISTS 
      (SELECT 0 
         FROM table2 t2 
        WHERE t1.ID IN (t2.asked_loan,t2.gave_loan) ) 

, сопоставляя эти два столбца table2 с ID столбцом table1

Demo

0 голосов
/ 24 февраля 2020

Вы должны выбрать строки, которые не соответствуют:

    SELECT DISTINCT  TABLE1.id,`name`,`adress` 
    FROM `TABLE1` 
    LEFT JOIN `TABLE2` ON TABLE2.asked_loan=TABLE1.id  
     AND  `asked_loan` !=1 
      AND `gave_loan` !=1
    WHERE  TABLE2.asked_loan is null
...