我有以下問題。選擇在另一個表中具有一組值的行
我對我的項目中的用戶進行過濾,並且我希望從數據庫中僅選擇具有表中所有由$ fm_instrument指定的工具的用戶。
表用戶:
id_user | user_type |
--------------------------
| 1 | 2 |
表儀器看起來是這樣的:
| id_user_instrument | id_user | instrument_title |
----------------------------------------------------------
| 1 | 1 | organ |
| 2 | 1 | flute |
| 3 | 1 | piano |
實例:過濾器返回$ fm_instrument = '笛子,風琴'
我這樣做:
if(isset($fm_instrument) && $fm_instrument != '')
{
$instrument_arr = explode(',',$fm_instrument);
$instrument_sql = '';
foreach ($instrument_arr as $i=>$val) // pro kazdy nastroj
{
if($i != 0) {$instrument_sql.=" AND ";}
$instrument_sql .= " ( instrument_title='".$val."') ";
}
$instrument_sql_part = " AND ($instrument_sql)";
}
$user_sql ="SELECT * FROM `user` AS pu
LEFT JOIN instrument AS i USING(`id_user`) WHERE user_type=2 $instrument_sql_part ";
但它不適用於多個儀器。
我敢肯定,有更好的解決方案,正確的mysql_query,但我的mysql知識不太好。
謝謝你對我的耐心。
只是寫的SQL - SELECT * FROM'user'浦 LEFT JOIN儀器正如我在(pu.id_user =我。 id_user)WHERE user_type = 2 AND instrument_title IN(「flute」,「organ」) – Joddy
我的意思是 - 使用IN子句 – Joddy
@Joddy用戶結果必須匹配**所有**工具而不是一些 –