2010-07-26 7 views
0

我需要建立一個連接用於以下查詢:MySQL的加入查詢

表供應商:

  • ID

表supplier_vehicles

  • ID
  • supplier_id
  • vehicle_id

一個供應商可以有多個車輛。

在我的前端表單中,我有一個複選框列表 - 用戶可以選擇多個車輛。後端腳本需要進行搜索並返回包含任何指定車輛ID的所有供應商。

複選框列表名稱是汽車類型[]和將在$ _POST數組(例如)在結束了:

Array 
(
    [0] => 1 
    [1] => 4 
    [2] => 6 
) 

此刻,我可以用一些SQL實例,這樣我可以測試做查詢使用不同的值。

回答

2

如果你知道車輛的ID,你可以使用IN子句:

SELECT * 
    FROM supplier s 
    , supplier_vehicles v 
WHERE s.id = v.supplier_id 
    AND v.vehicle_id IN (1, 4, 6) 

如果你只是想在不同供應商的ID,你可以使用DISTINCT。

SELECT DISTINCT s.supplier_id 
    FROM supplier s 
    , supplier_vehicles v 
WHERE s.id = v.supplier_id 
    AND v.vehicle_id IN (1, 4, 6) 
+0

需要使用動態SQL動態IN參數... – 2010-07-26 17:28:49

+1

@OMG小馬 - 我是試圖給他一些查詢例子。我不確定他在前端使用什麼語言,所以我儘量保持一般。但是,由於SQL注入風險,我不會在前端執行硬編碼查詢,如果需要,我會創建SP並傳遞值並在後端使用動態SQL。 – dcp 2010-07-26 17:31:28

+1

向合唱團講道:)我不知道動態輸入參數是否是OP所需要的。 – 2010-07-26 17:34:34

0

首先創建一個字符串,它包含逗號分隔的所有元素。不知道你在做什麼語言,但你可以使用JOIN函數或循環訪問數組。

根據您的示例字符串將等於1,4,6

的爲您的SQL查詢:

"SELECT s.name 
FROM supplier AS s 
JOIN supplier_vehicles AS v 
ON s.id = v.supplier_id 
WHERE v.vehicle_id IN (" + stringName + ")"