我有两张表如下..
Drug_Master
PKDrugId - int
DrugName - varchar
DrugType - varchar
Stock_Master
PKStockId - int
FKDrugId - int
Total_quantity_on_hand - int
我想在DrugName
表中编写一个显示FKDrugId
而不是Stock_Master
的查询。
任何人都可以帮忙吗?
答案 0 :(得分:2)
JOIN
表如此:
SELECT
s.PKStockId,
d.DrugName,
s.Total_quantity_on_hand
FROM Stock_Master s
INNER JOIN Drug_Master d ON s.FKDrugId = d.PKDrugId;
请详细了解JOIN
s:
您可能需要LEFT JOIN
而不是INNER JOIN
来获取不匹配的行。例如,如果您需要在另一个Stock_Master
表中包含那些没有股票条目的药品名称,您可以这样做:
SELECT
ISNULL(s.PKStockId, 0),
d.DrugName,
ISNULL(s.Total_quantity_on_hand, 0)
FROM Drug_Master d
LEFT JOIN Stock_Master s ON s.FKDrugId = d.PKDrugId;
您可以使用相关子查询而不是JOIN
,如下所示:
SELECT
s.PKStockId,
(SELECT d.DrugName
FROM Drug_Master d
WHERE s.FKDrugId = d.PKDrugId) AS DrugName,
s.Total_quantity_on_hand
FROM Stock_Master s;
SQL Fiddle Demo using a subquery
但最好使用JOIN
。