SELECT * FROM dbo.Synola, dbo.Stores, dbo.Fpa, dbo.Nomismata
WHERE
dbo.Stores.Store_id = dbo.Synola.Store_id
AND
dbo.Stores.fpa_id = dbo.Fpa.fpa_id
AND
dbo.Stores.nomisma_id = dbo.Nomismata.nomisma_id
以上工作正常,没有错误。
我的问题是,当我尝试循环上述查询时:
目前,在我的Stores TABLE中,我只有只有2个商店,我想在循环中获得2条记录的结果 ONLY 。我的2家商店的2条记录。但不幸的是,我收到了超过2条记录。
我的查询的正确语法是什么,只能在循环中接收 2商店的结果?
答案 0 :(得分:1)
这应该只检索所有表中可用的数据。因此,它与主Stores
表不匹配,然后结果不会显示。
SELECT *
FROM Stores s
JOIN Synola sy ON sy.Store_id = s.Store_id
JOIN Fpa f ON f.fpa_id = s.fpa_id
JOIN Nomismata n ON n.nomisma_id = s.nomisma_id
如果由于其他表格中有更多匹配项而获得更多行,则需要考虑添加更多WHERE
条件或使用其他类型的JOIN
。
更多信息:https://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins
修改:要查看您在JOIN
上获得多个匹配项的位置:
SELECT s.Store_id "Store_id from Store",
,sy.Store_id "Store_id from Synola"
,s.fpa_id "fpa_id from Store"
,f.fpa_id "fpa_id from Fpa"
,s.nonisma_id "nomisma_id from Store"
,n.nonisma_id "nomisma_id from Nomismata"
FROM Stores s
JOIN Synola sy ON sy.Store_id = s.Store_id
JOIN Fpa f ON f.fpa_id = s.fpa_id
JOIN Nomismata n ON n.nomisma_id = s.nomisma_id