SELECT 表A.Part, CASE WHEN 表B.user = @user THEN 'Y' ELSE '' END
FROM 表A
JOIN 表B ON 表B.Part = 表A.Part
以上MSSQL
更新
有可能有商品沒有任何賣出紀錄 ,故紀錄檔中沒有該商品
所以改用LEFT JOIN
SELECT TableA.Part, CASE WHEN TableB.userID = 'User1' THEN 'Y' ELSE '' END Ans
FROM TableA
LEFT JOIN TableB ON TableB.Part = TableA.Part
感謝回復 我在想想看
順便解釋一下@user
如果沒猜錯
你表二的user欄位 應該是註記哪個使用者購買的
那就看登入資訊(@user)怎麼去對應user欄位
userID? IDNo? CusNo?
感謝你 可是我使用的是mysql 所以語法有點問題 我先試試看"石頭"的方法
錯誤訊息貼一下吧
兩者語法不會差太多
我是這樣打拉 因為我沒使用過MS所以直接照者打
這樣是列印一個null給我
$status="well";
$sql="SELECT part_number.id, CASE WHEN app_shop_favorite.user_id = '$status' THEN 'Y' ELSE '' END
FROM part_number
JOIN app_shop_favorite ON app_shop_favorite.user_id = part_number.id";
你JOIN打錯了
關聯是id 不是user_id
附上測試資料http://sqlfiddle.com/#!9/0252a6/2
$status="well";
$sql="SELECT part_number.id, CASE WHEN app_shop_favorite.user_id = '$status' THEN 'Y' ELSE '' END
FROM part_number
JOIN app_shop_favorite ON app_shop_favorite.id = part_number.id";
成功是成功了 但這樣列印只有表B 項目 我自己亂改了一下
傳送門
1.這是列印表B
SELECT TableA.Part, CASE WHEN TableB.userID = 'User1' THEN 'Y' ELSE '' END Ans
FROM TableA
JOIN TableB ON TableB.Part = TableA.Part
2.這可以列印表A但項目會重複
SELECT TableA.Part, CASE WHEN TableB.userID = 'User1' THEN 'Y' ELSE '' END Ans
FROM TableB
JOIN TableA ON TableA.Part = TableA.Part
SELECT TableA.Part, CASE WHEN TableB.userID = 'User1' THEN 'Y' ELSE '' END Ans
FROM TableA
LEFT JOIN TableB ON TableB.Part = TableA.Part
改LEFT JOIN就可以了
LEFT JOIN 是依主要Table (FROM TableA)為主
有哪些商品全都show
JOIN 預設是INNER JOIN
需要兩邊都有商品紀錄 資料才會跑出來
我注意到你商品檔有原子筆 但購買紀錄檔沒有人買過原子筆
也就是表A.ID有資料 但表B.ID沒資料
所以JOIN 才跑不出原子筆的資料
樓主這方面可以多查關於
LEFT JOIN
INNER JOIN
RIGHT JOIN
OUTER JOIN
差異性 並且熟練會很有幫助
測試資料
了解 我再來研究一下 這幾個的差異
可以使用OUTER JOIN
和聚合函數.
SELECT A.Part,
MAX(B.User IS NOT NULL) c
FROM A
LEFT JOIN B ON A.Part = B.Part
GROUP BY A.Part
Note
MAX(B.User IS NOT NULL)