从两个不同的表中显示数据

时间:2019-08-06 04:52:53

标签: php mysql

我无法显示mysql数据库中两个不同表中的数据。

我有两个桌子。

(表1 ID NAME MID的值是ID = 1,2,3 NAME = name1,name2,name3 MID = 1,0,0)

(表2 MID名称,其值是MID = 1,2,3 MNAME = mname1,mname2,mname3)

我使用此查询,但无法获得所需的输出

$sql="SELECT MNAME FROM table2 WHERE MID = MID IN(SELECT MID from table1)";

这里是整个查询:

$sql="SELECT * FROM table1 ORDER BY ID ASC";
$result = mysqli_query($con,$sql);
if (mysqli_num_rows($result)>0) {
    $sql1="SELECT MNAME FROM table2 WHERE MID = MID IN(SELECT MID from table1)";
    $result1 = mysqli_query($con,$sql1);
    if (mysqli_num_rows($result1)>0) {
        while($row1 = mysqli_fetch_array($result1)) {
echo '<table">
<tr>
<th>SID</th>
<th>NAME</th>
<th>MNAME</th>
</tr>';
while($row = mysqli_fetch_array($result)) {
    <tr>
    <td><?php echo  $row['ID']  ?></td>
    <td><?php echo  $row['NAME']  ?></td>
    <td><?php echo  $row1['MNAME']  ?></td>
    </tr>

上面的代码显示如下:

|ID | NAME | MNAME   
|1  |name1 | mname1  
|2  |name2 | mname1  
|3  |name3 | mname1

应显示如下:

|ID | NAME | MNAME   
|1  |name1 |mname1  
|2  |name2 |empty  
|3  |name3 |empty

2 个答案:

答案 0 :(得分:0)

您要尝试执行的操作可以简化为一个查询。

在您的示例中,您似乎似乎想要遍历第一个查询的结果并为每个结果执行另一个SELECT。

这可以通过左联接来简化。使用左联接,您将从左表(table1)获得所有结果,而从右表(table2)获得匹配结果。如果没有匹配项,结果将为空。

SELECT t1.ID, t1.NAME, t2.MNAME
FROM table1 t1
LEFT JOIN table2 t2 ON t1.MID = t2.MID
ORDER BY t1.ID ASC

答案 1 :(得分:0)

您的查询中应该是

select * from table1 as t1 left join table2 as t2 on t1.mid= t2.mid

并代表该查询结果集可以迭代foreach循环以显示数据表。

:)