2010-07-26 349 views
0

在我的數據庫表中,我有以下字段:MySQL的 - 搜索在多值字段

表供應商:

  • ID

一供應商可以有多輛車。 「車輛」字段將存儲多個值。目前,我正在用「管道」符號分隔這些值,但如果需要,可以將其更改爲逗號。

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

因此,換句話說,我們在一個多元值域多個值進行搜索。

複選框列表名稱是汽車類型[]和將在$ _POST數組中最終成爲(例如):

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

這是可能的嗎?我顯然可以使用連接表來做到這一點,但理想情況下我想這樣做。如果有幫助,我使用PHP作爲我的腳本語言。

+0

重複您的問題:[MySQL Join Query](http://stackoverflow.com/questions/3337276/mysql-join-query),發佈** 18分鐘**之前。 – 2010-07-26 17:46:42

+0

不是重複 - 只是一種不同的方法。 – GSTAR 2010-07-26 17:47:17

回答

2

字段「車」將存儲多個值。目前,我正在用「管道」符號分隔這些值,但如果需要,可以將其更改爲逗號。

請不要這樣做。在文本字段中存儲分隔的數據是不超過其存儲在一個平面文件更好。數據變得無法查詢。

你想a nice, happy, normalized database

CREATE TABLE Suppliers (
    supplier_id INTEGER PRIMARY KEY, 
    ... 
); 

CREATE TABLE Vehicles (
    vehicle_id INTEGER PRIMARY KEY, 
    ... 
); 

CREATE TABLE Supplier_Vehicles (
    supplier_id INTEGER NOT NULL REFERENCES Suppliers(supplier_id), 
    vehicle_id INTEGER NOT NULL REFERENCES Vehicles(vehicle_id), 
    UNIQUE KEY(supplier_id, vehicle_id) 
); 

-- Grab all the Vehicles for Supplier 39 
SELECT Vehicles.* 
    FROM Vehicles, Supplier_Vehicles 
WHERE Supplier_Vehicles.supplier_id = 39 
    AND Supplier_Vehicles.vehicle_id = Vehicles.vehicle_id 

複選框列表名稱是汽車類型[]和將在$ _POST陣列(舉例來說)[...]這是可以做到在結束了?

這是非常可能的,而且是一個好主意。嘗試一下並找出它的工作效果。