2017-02-09 28 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";