2012-03-13 21 views
0

私は現在mysqlを学んでいるので、これは非常に新しく、他の場所で解決策を見つけようとしましたが、それもできませんでした。1つのクエリで2つのテーブルを検索中

私は2つのテーブル、import_staffとimport_studentを持っています。

  • import_staffテーブルには3列、ID、stafffirstname、および
  • をstafflastname import_studentはまた、私はインクルードができるフォームを持っている3列、ID、studentfirstname、およびstudentlastname

を持っていスタッフユーザーまたは学生ユーザーのいずれかの名前で検索します。

私はこのように一つのテーブルを検索する私のクエリを取得することができます。

SELECT * FROM import_staff WHERE CONCAT(stafffirstname,space(1),stafflastname) LIKE '%$queryString%' LIMIT 10 

BUT..Iは、クエリが両方のテーブル内で検索したい...でも起動する方法がわかりません。任意のアイデアが評価されます。ありがとう。

BTW- PHPの使用あなたがUNIONでそれを行うことができます

答えて

1

SELECT id, stafffirstname AS name1, stafflastname AS name2 FROM import_staff WHERE CONCAT(stafffirstname,space(1),stafflastname) LIKE '%$queryString%' LIMIT 10 
UNION ALL 
SELECT id, studentfirstname AS name1, studentlastname AS name2 FROM import_student WHERE CONCAT(studentfirstname,space(1),studentlastname) LIKE '%$queryString%' LIMIT 10 
0

また、あなたは、それはこれがあなたのために働くかもしれない

SELECT * 
FROM import_staff 
INNER JOIN import_student 
ON 1 = 1 
0
SELECT t1.stafffirstname, t1.stafflastname, t2.studentfirstname, t2.studentlastname, 
FROM import_staff t1, import_student t2 
WHERE CONCAT(t1.stafffirstname,space(1),t2.stafflastname) LIKE '%$queryString%' LIMIT 10 

に参加して行うことができます。

0
select * from (
    select id, stafffirstname as firstname, stafflastname as lastname from import_staff 
    union 
    select id, studentfirstname as firstname, studentlastname as lastname from import_student) t 
where concat_ws(' ',firstname,lastname) like '%term%' 

テーブル定義では、studentlastnameなどの代わりにlastnameを使用するだけです。テーブル名import_staffとimport_studentはすでに名前空間を提供しています。

関連する問題