访问多个表Mysql
嗨,我已经看过很多类似于我的问题的答案,但是没有一个答案超过一个。 我试图查看我的数据库中是否有跨多个表的内容 我的守则如下:访问多个表Mysql,mysql,select,where,Mysql,Select,Where,嗨,我已经看过很多类似于我的问题的答案,但是没有一个答案超过一个。 我试图查看我的数据库中是否有跨多个表的内容 我的守则如下: <?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 -&
<?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}
?>
结果应为1,6,8
非常感谢您提供的任何帮助并不确切地知道您想做什么,但从外观上看,您需要这样的陈述:
$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."'";
如果需要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";
查看join on更新您的问题,并添加适当的数据样本和预期结果。。请注意,您的声明是要标识所有表中存在的内容。如果是这种情况,那么您希望执行类似于您所做的操作,但是由于所有3个表都有一个列ID,因此您需要选择所有三个表,或者只选择一个带前缀的表。您可以使用union,但不会得到一行,最多可以得到3行作为响应,它将返回任何表的ID。如果条件是要验证所有3个表中存在的实体,则该联合将出现问题。
SELECT id
FROM groom
inner join on groom.person = lroom.person
inner join try on groom.person = try.person
where groom.person= $a";