1

これらのテーブルがあるとします。

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ステートメントを作成しようとしています。このステートメントでは、Kronolという薬を販売するすべての薬局について、id_pharmacyとname FROM PHARMACYからデータを取得し、PHARMACISTからinsurance_number、name、surname列を取得します。

そしてそれは基本的にそれです。以前に作成したコードの関係が欠落していることはわかっています。

注:左右にアンダースコアが付いている列名には下線が引かれています(主キー)。

4

2 に答える 2

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')
于 2012-06-18T15:33:18.297 に答える
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また、満たそうとしている正確な要件に応じて、より良いオプションである場合とそうでない場合があることにも言及する価値があります。

于 2012-06-18T15:13:44.110 に答える