2013-07-09 67 views
0

我有這個表:Mysql的選擇多個查詢

------------------------------ 
|ID | name | employee_code | 
------------------------------ 
|24 | Robert | 20234  | 
------------------------------ 

------------------------------------- 
|ID | job_code |  team  | 
------------------------------------- 
|24 | 241124 | Robert, Eduard, Etc. | 
------------------------------------- 

我想通過員工代碼在第二個表進行搜索,我嘗試這樣:

$sql=mysql_query("SELECT * FROM works WHERE (SELECT name FROM employee WHERE employee_code LIKE '%".$_GET['employee_code']."%' AS searchname) team Like %searchname% "); 

結果:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource 
+1

查詢失敗。嘗試添加'mysql_error()'到你的查詢 - '$ sql = mysql_query(「SELECT * FROM ...)或者死(mysql_error());' – Sean

+0

你的意思是第二個表的job_code必須和'僱員代碼「形式第一個? – vladkras

+0

另外需要注意的是,請考慮'mysql'函數現在已被棄用,請使用'PDO'或'mysqli'來代替 – webnoob

回答

2

嘗試此查詢 -

$employee_code = mysql_real_escape_string($_GET['employee_code']); 

$sql=mysql_query("SELECT w.* 
        FROM employee e 
        JOIN works w 
        ON w.team LIKE CONCAT('%', e.name ,'%') 
        WHERE employee_code LIKE '%$employee_code%'"); 

看到這個SQLFiddle例子 - http://sqlfiddle.com/#!2/8f8b7/1

0

您應該查看連接。

select * from table1 inner join table2 using (`ID`) where job_code = .... 

然後你有1排,兩個表結合在一起

還您使用mysql_ *功能,這些都不再維持請升級到mysqli_ *或PDO。

而且你需要逃避你的查詢,有一個SQL注入攻擊等在該代碼發生

0

這可能會告訴你什麼是錯的。

$sql=mysql_query("SELECT * FROM works WHERE (SELECT name FROM employee WHERE employee_code LIKE '%".$_GET['employee_code']."%' AS searchname) team Like %searchname% "); 
if (!$sql) 
    echo mysql_error(); 

你不應該只是假設您的查詢工作,然後進行使用該資源在另一個命令不檢查,它實際上是工作一樣。

你不應該做的另一件事就是將用戶輸入直接放入SQL查詢中,不用任何形式的轉義,因爲它可以使任何人都能完全控制你的數據庫。

SELECT * FROM works WHERE (SELECT name FROM employee WHERE employee_code LIKE '%".mysql_real_escape_string($_GET['employee_code'])."%' AS searchname) team Like %searchname% " 
+0

我知道但我只發表問題sql查詢 –

+0

好吧,那麼你得到的錯誤是什麼,但沒有把你的問題放在你的問題?一種重要的信息包括你不會想? – Anigel

+0

@Anigel - 無論錯誤,他試圖使用的查詢是清楚的 – webnoob

0

你的SQL查詢是錯誤的嘗試這樣

SELECT * FROM works WHERE works.ID=employee.ID AND 
    employee.employee_code=".$_GET['employee_code']." 
0
SELECT * FROM table1 t1 INNER JOIN table2 t2 ON t1.employee_code = t2.job_code 

SELECT t1.id, t1.name, t2.team FROM table1 t1 INNER JOIN table2 t2 ON t1.employee_code = t2.job_code 

更清潔的結果