2017-02-09 53 views
0

嗨我已經看過很多類似於我的問題的答案,但沒有一個在哪裏有多個。 我想查看是否有多個表中的數據庫中有東西。訪問多個表Mysql

我的代碼如下:

<?php 


$sql = "SELECT id FROM groom, lroom, try WHERE groom.person = $a AND lroom.person = $a AND try.person = $a"; 

     $result = $conn -> query ($sql); 


    if($result -> num_rows >0){ 
//DO SOMETHING }else{//Dont do anything} 
    ?> 

示例數據庫

groom 
id room person 
1  4  1 

lroom 
id room person 
6  8  1 

try 
id court person 
8 2  1 


$a = 1; 

結果應該是1,6,8 任何幫助是極大的讚賞

+0

加入 – Maxqueue

+0

更新你的問題,並添加一個適當的數據樣本和預期的結果..請 – scaisEdge

+0

你的陳述是,你想識別出存在於所有表中的東西。如果是這種情況,那麼你想做一些類似於你所做的事情,但是由於所有3個表都有一個列ID,所以你需要選擇全部三個或只有一個前綴。你可以使用聯合,但你不會得到一行,你會得到3行作爲響應,它會返回任何表的ID。如果條件是要驗證所有3個表中存在的實體,則聯合會出現問題。 –

回答

0

不完全知道是什麼你正試圖做,但從它看起來像,你需要這樣的陳述:

$sql = "SELECT groom.id AS groomid, lroom.id AS lroomid, try.id AS tryid FROM groom, lroom, try WHERE groom.person = ".$a." AND lroom.person = ".$a". AND try.person = ".$a; 

如果$a不是一個整數或布爾值,然後加上引號在SQL語句:

$sql = "SELECT groom.id AS groomid, lroom.id AS lroomid, try.id AS tryid FROM groom, lroom, try WHERE groom.person = '".$a."' AND lroom.person = '".$a"'. AND try.person = '".$a."'"; 
1

如果你需要相同的價值觀形成了3個表,你可以使用union

select id 
from groom 
where groom.person = $a 
union 
select id 
from lroom 
where lroom.person = $a 
union 
select id 
from try 
where try.person = $a 

您只需要匹配所有3個表的值

SELECT id 
    FROM groom 
    inner join on groom.person = lroom.person 
    inner join try on groom.person = try.person 
    where groom.person= $a";