2017-02-09 12 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} 
    ?> 

SAMPLE DATABASE

groom 
id room person 
1  4  1 

lroom 
id room person 
6  8  1 

try 
id court person 
8 2  1 


$a = 1; 

RESULTは1,6,8 すべてのヘルプは大幅に

+0

参加を検討する – Maxqueue

+0

あなたの質問を更新し、適切なデータサンプルと予想される結果を追加してください。 – scaisEdge

+0

あなたの声明では、すべてのテーブルに存在するものを特定したいと考えています。 3つのテーブルすべてにカラムIDがあるため、3つすべてを選択するか、プレフィックスを付けたテーブルを1つ選択する必要があります。あなたは共用体を使用することができますが、1行を取得することはできません。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つのテーブル組合

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"; 
関連する問題