[英]SQL query to find all the states where store is not open?
我有表 A Stores,其中包含商店信息。 表 B 具有所有狀態信息。 我需要將表 A 連接到表 B 以獲取商店開張的所有州。 現在我需要找到商店未開放的所有州。
表一:
專賣店 | 州代碼 |
---|---|
店鋪A | 國會議員 |
B店 | 向上 |
B店 | 國會議員 |
門店 C | JK |
表 B:
州代碼 | 州名 |
---|---|
國會議員 | 中央邦 |
向上 | 北方邦 |
JK | 查謨克什米爾 |
Output表:
專賣店 | 州代碼 | 州名 |
---|---|---|
店鋪A | 向上 | 北方邦 |
店鋪A | JK | 查謨克什米爾 |
B店 | JK | 查謨克什米爾 |
門店 C | 向上 | 北方邦 |
門店 C | 國會議員 | 中央邦 |
我試過這個:
SELECT *
FROM tableB
LEFT OUTER JOIN tableA
ON tableA.<stateCode> = tableB.<stateCode>
WHERE tableA.<stateCode> IS NULL
如果您使用 Microsoft SQL 服務器,請嘗試此查詢
SELECT Distinct
A.Stores,
B.StateCode,
B.StateName
FROM TableA as A INNER JOIN TableB as B
ON B.StateCode Not IN (SELECT Statecode FROM TableA WHERE Stores = A.Stores)
使用示例:
SELECT
`A`.`Stores`,
`B`.`StateCode`,
`B`.`StateName`
FROM
`A`
INNER JOIN `B` ON `B`.`StateCode` Not IN (
SELECT
`a1`.`Statecode`
FROM
`A` As `a1`
WHERE
`a1`.`Stores` = `A`.`Stores`
)
GROUP By
`A`.`Stores`,
`B`.`StateCode`,
`B`.`StateName`;
在 tableB 和來自 tableA 的不同商店的值之間進行交叉連接以獲得(商店,狀態)的所有可能組合,然后進行左連接,如下所示:
select DA.Stores, B.StateCode, B.StateName
from tableB B cross join
(
select distinct Stores from tableA
) DA
left join tableA TA
on TA.Stores = DA.Stores and
TA.StateCode = B.StateCode
where TA.Stores is null
order by DA.Stores
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.