我正在開發一個花壇種植系統,並且已經編寫了一個查詢8個表的SQL語句,以便返回一個合適的植物列表。SQL查詢不返回標準集
表結構:http://pastebin.com/0DUYQis1 [從phpmyadmin的輸出]
實施例的數據:http://gyazo.com/13dad0b3370b5053dbcad2a32013a54a/http://gyazo.com/1bd313adb3e8ccd01354c979e69fd059
SQL語句:
SELECT Plant.Plant_ID, Plant.Plant_Quantity, Plant.Plant_Price, Plant.Plant_Description, Plant.Plant_Latin_Name, Plant.Plant_Common_Name, Plant.Plant_Height, Plant.Plant_Spread, Plant.Plant_Type, Plant.Plant_Family, Plant.Plant_Picture, Plant_Aspect.Plant_Aspect, Plant_Flower_Colour.Plant_Flower_Colour, Plant_Flower_Colour.Plant_Season, Plant_Foliage_Colour.Plant_Foliage_Colour, Plant_Foliage_Colour.Plant_Season, Plant_Moisture.Plant_Moisture, Plant_Soil_PH.Plant_Soil_PH, Plant_Soil_Type.Plant_Soil_Type, Plant_Sun_Type.Plant_Sun_Type
FROM Plant
INNER JOIN Plant_Aspect ON Plant.Plant_ID = Plant_Aspect.Plant_ID
INNER JOIN Plant_Flower_Colour ON Plant.Plant_ID = Plant_Flower_Colour.Plant_ID
INNER JOIN Plant_Foliage_Colour ON Plant.Plant_ID = Plant_Foliage_Colour.Plant_ID
INNER JOIN Plant_Moisture ON Plant.Plant_ID = Plant_Moisture.Plant_ID
INNER JOIN Plant_Soil_PH ON Plant.Plant_ID = Plant_Soil_PH.Plant_ID
INNER JOIN Plant_Soil_Type ON Plant.Plant_ID = Plant_Soil_Type.Plant_ID
INNER JOIN Plant_Sun_Type ON Plant.Plant_ID = Plant_Sun_Type.Plant_ID
WHERE Plant_Aspect.Plant_Aspect = 'East-facing'
OR Plant_Aspect.Plant_Aspect = 'Any'
AND Plant_Soil_Type.Plant_Soil_Type = 'Sand'
OR Plant_Soil_Type.Plant_Soil_Type = 'Any'
AND Plant_Moisture.Plant_Moisture = 'Well-drained'
OR Plant_Moisture.Plant_Moisture = 'Any'
AND Plant_Soil_PH.Plant_Soil_PH = 'Acid'
OR Plant_Soil_PH.Plant_Soil_PH = 'Any'
AND Plant_Foliage_Colour.Plant_Foliage_Colour = 'Green'
AND Plant_Foliage_Colour.Plant_Season = 'Winter'
OR Plant_Foliage_Colour.Plant_Season = 'Any'
AND Plant_Flower_Colour.Plant_Flower_Colour = 'Orange'
AND Plant_Flower_Colour.Plant_Season = 'Winter'
OR Plant_Flower_Colour.Plant_Season = 'Any'
GROUP BY Plant_ID;
我期待查詢返回只有那些有記錄匹配的植物e搜索標準,即。只有那些可以在「冬季」或「任何」季節種植的植物,而是它不應該返回的植物。
例如:http://gyazo.com/d2ca989fc6def79854a1d9b11e4bc310 - Plant_ID: 1
只包含Plant_Flower_Colour
表中的一條記錄 - 春季的深藍色。爲什麼這個記錄已經被返回?就好像尾隨的AND
s和OR
s被忽略。
任何幫助將不勝感激!
+1:對於完全不同的方法和整齊地縮放的方法。 – 2013-02-14 01:50:04
謝謝,我不知道IN子句! – 2013-02-14 02:01:05