2014-03-02 58 views
0

我在MySQL两个表,一个商店都有一个主ID键,但不同的细节中,比如:while循环while循环的MySQL

table 1: | id | name | type | 

table 2: | id | secondary id | more dateails | 

简化代码,我使用的是:

$status = $mysqli->query("SELECT * FROM `table1`"); 

while($rows = $status->fetch_array(MYSQLI_BOTH)) 
{ 
    $id = $rows['id']; 
    $conts_q = $mysqli->query("SELECT * FROM `table2` WHERE id='$id'"); 
    $conts_numr = $conts_q->num_rows; 

    if($conts_numr==0) 
    { 
     //Display empty 
    } 
    else 
    { 
     while($row2 = $conts_q->fetch_array(MYSQLI_BOTH)) 
     { 
      //Get details and display 
     } 
    } 
} 

如果第二个表没有内容,它会显示它很好,但是如果是这样,它会显示每个id的所有内容,而不仅仅是与它相关的所有内容,我似乎无法找到我做错了。如果我发布的代码不够用,我会在这里发布完整的原始代码。

+9

[学习'JOIN'而不是专门制作2个不必要的循环的时间。示例:'SELECT t1.name,t1.type,t2.details FROM table1 t1 LEFT JOIN table2 t2 ON t1.id = t2.referencedidfromtable1 WHERE t1.id ='$ id''](http://stackoverflow.com/问题/ 7877720/the-best-tutorial-on-join-in-mysql) – Prix

+2

向服务器显示一些爱,并使用JOIN。 – Shomz

+2

请**正确地缩进您的代码**。你在寻求帮助,让你的帖子尽可能可读。我已经为你做了这次:) –

回答

2

正如评论指出,获得这个数据的最佳方式是使用JOIN

SELECT * FROM `table1` t1 
INNER JOIN `table2` t2 ON t1.id = t2.id 

您可能需要按摩返回的栏目等。