Почему состояние не так? - PullRequest
0 голосов
/ 27 марта 2019

Я пытаюсь использовать левое соединение для 2 таблиц.Первая таблица имеет первичный ключ, вторая таблица не имеет первичного ключа

Я использую общий синтаксис sql с простыми командами.

CREATE TABLE NAMES(pk integer PRIMARY KEY, Name text);
CREATE TABLE CITIES(fk integer, Name text);

INSERT INTO NAMES VALUES(1,'Tom');
INSERT INTO NAMES VALUES(2,'Lucy');
INSERT INTO NAMES VALUES(3,'Frank');

INSERT INTO CITIES VALUES(1,'Moscow');
INSERT INTO CITIES VALUES(3,'Saransk');
INSERT INTO CITIES VALUES(4,'Penza');
INSERT INTO CITIES VALUES(1,'Samara');

SELECT * FROM NAMES LEFT JOIN CITIES WHERE NAMES.pk = CITIES.fk

Надеюсь увидеть записи с NULL.Но я вижу только записи, которые соответствуют условиям: https://rextester.com/FXMPF52805

Ответы [ 2 ]

1 голос
/ 27 марта 2019

правильно левое соединение синтаксис

SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name = table2.column_name;

, поэтому вы должны изменить WHERE на ON

 SELECT * FROM NAMES LEFT JOIN CITIES ON NAMES.pk = CITIES.fk
0 голосов
/ 27 марта 2019

, когда вы выбираете правые объединения как «левое соединение, правое соединение и т. Д.»

вы должны написать запрос, как показано нижена NAMES.pk = CITIES.fk

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...