我有一個規範化數據庫,其中上級表包含不同的產品和從屬表特徵。下級表通過外鍵鏈接到上級表。這意味着如果幾個特徵與產品的屬性相匹配,則在下屬表中可能有多次出現一個且相同的特徵_id(=外鍵),例如,如何避免從SQL數據庫中選擇,如果某些值匹配
Superior table (product_main_table):
product_id product_name
23 apple
24 orange
25 strawberry
Subordinate table (product_characteristics):
characteristic_id product_name characteristic
23 apple green
23 apple sweet
23 apple small
23 apple american
24 orange orange
24 orange sourly
24 orange big
24 orange african
25 strawberry red
25 strawberry sweet
我有一個html格式來讀出數據,也應該有可能搜索所有不符合某些特徵的產品。 但是,這不起作用。當我輸入以下請求:
SELECT DISTINCT main.product_name
FROM product_main_table main, product_characteristics prodchar
WHERE prodchar.characteristic != 'sweet'
結果是「蘋果」,「橙」和「草莓」,wheresas它應該是「橙色」,而已。其他兩種產品當然是選擇的,因爲它們有其他特性,而不是「甜」的選擇。
我會很樂意,如果解決方案將融入我一般SQL請求
$sql = "SELECT DISTINCT $selection FROM $tabelle WHERE $masterarray";
其中和$masterarray
從HTML條目得到他們的內容。
如何使我的where語句,以便產品沒有被選中,如果它包含一個不應該存在的單一特徵?
你需要一個條件。 add main.product_name = sub_ord.product_name :) – WannaBeCoder
如果你的特性數據庫中有另一個字段用於分類(顏色,味道等),那麼你可以做WHERE prodchar.category ='taste'AND prodchar.characteristic!='sweet ' – Stevish
謝謝你的回答! :)但是,結果與以前一樣。 – Columbus