假设你有这些表:
PHARMACY(**___id_pharmacy___**, name, addr, tel)
PHARMACIST(**___Insurance_number___**, name, surname, qualification, **id_pharmacy**)
SELLS(**___id_pharmacy___**, **___name___**, price)
DRUG(**___Name___**, chem_formula, **id_druggistshop**)
DRUGGISTSHOP(**___id_druggistshop___**, name, address)
我认为这将更具体。
所以,我正在尝试构建一个SQL语句,在其中我将从id_pharmacy获取数据并命名FROM PHARMACY,来自PHARMACIST的insurance_number,name和surname列,用于销售该药物的所有药房,名为Kronol
基本上就是这样。我知道我错过了我之前编写的代码中的关系。
注意:那些左下角有下划线的列名称带下划线(主键)。
答案 0 :(得分:1)
您编写的查询将无法在我所知道的任何DBMS中使用。
您很可能想要使用JOINs
的某种组合。
由于未提供确切的架构,请考虑此伪代码,但希望它能让您走上正确的轨道。
SELECT PH.Ph_Number, PH.Name, PHCL.Ins_Number, PHCL.Name, PHCL.Surname
FROM PH
INNER JOIN PHCL ON PHCL.PH_Number = PH.Ph_Number
INNER JOIN MLIST ON MLIST.PH_Number = PH.PH_Number
WHERE MLIST.Name = "Andy"
我显然假设表之间可能存在或可能不存在某些关系,但希望这将非常接近。 UNION
运算符不起作用,因为您从各个表中选择不同的列和不同数量的列。对于你想要做的事情,这是一个错误的方法。值得一提的是,LEFT JOIN
对您来说可能是也可能不是更好的选择,具体取决于您尝试满足的具体要求。
答案 1 :(得分:1)
好的,试试这个查询:
SELECT A.id_pharmacy, A.name AS PharmacyName, B.Insurance_number,
B.name AS PharmacistName, B.surname AS PharmacistSurname
FROM PHARMACY A
LEFT JOIN PHARMACIST B
ON A.id_pharmacy = B.id_pharmacy
WHERE A.id_pharmacy IN (SELECT id_pharmacy FROM SELLS WHERE name = 'Kronol')