SQL JOINS: почему Sqlite3 JOIN USING дает правильный ответ, а JOIN ON - нет? - PullRequest
0 голосов
/ 20 апреля 2020

Я ожидаю увидеть Салли Смит в списке с CityName, равным 'Канзас-Сити', которое я получаю при использовании JOIN USING, но не получаю при использовании JOIN ON.

Я что-то здесь не так делаю?

sqlite> select Customer.*, City.* from Customer inner join City USING(CityId);

CustomerId  CityId      CustomerName  CityId      CityName   
----------  ----------  ------------  ----------  -----------
1           1           Bob Smith     1           Kansas City
2           1           Sally Smith   1           Kansas City
3           2           Tom Smith     2           New York   
5           2           Bob McKenner  2           New York   

sqlite> select Customer.*, City.* from Customer inner join City on Customer.CustomerId=City.CityId;

CustomerId  CityId      CustomerName  CityId      CityName   
----------  ----------  ------------  ----------  -----------
1           1           Bob Smith     1           Kansas City
2           1           Sally Smith   2           New York   
3           2           Tom Smith     3           Houston    

sqlite> select * from Customer;

CustomerId  CityId      CustomerName
----------  ----------  ------------
1           1           Bob Smith   
2           1           Sally Smith 
3           2           Tom Smith   
4                       Mary Smith  
5           2           Bob McKenner  

sqlite> select * from City;

CityId      CityName   
----------  -----------
1           Kansas City
2           New York   
3           Houston    
sqlite> 

1 Ответ

1 голос
/ 20 апреля 2020

Вы присоединяетесь к неправильным столбцам:

select Customer.*, City.* from Customer inner join City 
on Customer.CustomerId=City.CityId;

измените его на:

select Customer.*, City.* from Customer inner join City
on Customer.CityId=City.CityId;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...