-1

我有两张表如下..

药物_大师

PKDrugId - int

DrugName - varchar

DrugType - varchar

Stock_Master

PKStockId - int

FKDrugId - int

Total_quantity_on_hand - int

我想编写一个显示DrugName而不是FKDrugIdStock_Master表中显示的查询。

谁能帮忙?

4

1 回答 1

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;

SQL 小提琴演示

请阅读有关JOINs 的更多信息:

您可能需要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;

LEFT JOIN SQL Fiddle 演示

您可以使用相关的子查询,而不是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 演示

但最好使用JOIN.

于 2013-01-01T08:11:23.540 回答