Innodb
我有 2 個父表和 1 個子表,我想執行一個涉及父母雙方的查詢
我有一張表,其中包含有關用於釀造的不同類型啤酒花的資訊,另一張表包含用於描述啤酒花的香氣列表。我製作了第三個表,其中包含一個主鍵和兩個外鍵(一個是 hops 表的主鍵,一個是芳香表的主鍵)。我將其設置為兩個表,因為任何啤酒花品種都可能有多個香氣描述符,並且任何香氣都可能適用於多個啤酒花品種。
兩個父母的孩子是通過以下方式創建的:
CREATE TABLE IF NOT EXISTS aromareference ( ID int(5) NOT NULL AUTO_INCREMENT, HopsID int(5) DEFAULT NULL, DescriptorID int(5) DEFAULT NULL, CONSTRAINT FOREIGN KEY (HopsID) REFERENCES hops (ProductID), CONSTRAINT FOREIGN KEY (DescriptorID) REFERENCES hopsdescriptors (DescriptorID), PRIMARY KEY(ID) );
hops 表有一個名為 HumanName 的列,hopsdescriptors 表也是如此。我想使用 hops 表中的 HumanName 執行查詢,以從 hopsdescriptors 表中列出所有適用的香氣的 HumanName。
作為範例輸出,我會尋找類似的東西:
+------------+ | Centennial | +------------+ | Floral | | Citrus | +------------+
相關表格的基本結構如下:
CREATE TABLE IF NOT EXISTS hops ('ProductID' int(5) NOT NULL AUTO_INCREMENT, 'HumanName' varchar(50) DEFAULT NULL, 'ShortDescript' varchar(500) DEFAULT NULL, 'PrimaryUse' int(1) DEFAULT NULL, 'AlphaAcidMin' float(5,2) DEFAULT NULL, 'AlphaAcidMax' float(5,2) DEFAULT NULL, 'CohumuloneMin' int(3) DEFAULT NULL, 'CohumuloneMax' int(3) DEFAULT NULL, PRIMARY KEY ('ProductID') ); CREATE TABLE IF NOT EXISTS hopsdescriptors ('DescriptorID' int(5) NOT NULL AUTO_INCREMENT, 'HumanName' varchar(20) DEFAULT NULL, 'ShortDescript' varchar(500) DEFAULT NULL, PRIMARY KEY ('DescriptorID') );
我想這是一個非常常見的查詢,但是我對這些東西是全新的,我什至無法清楚地考慮這個問題來Google它。
使用
aromareference
table 從兩個表中獲取所有引用的記錄,hops
並且hopsdescriptors
.然後按 hops.HumanName(或任何 hops 或 hopsdescriptors 欄位)過濾記錄,並顯示所需的列。
SELECT hd.HumanName FROM aromareference a INNER JOIN hops h ON a.HopsId = h.ProductId INNER JOIN hopsdescriptors hd ON a.DescriptorID = hd.DescriptorID WHERE h.HumanName = 'Centennial'