我无法显示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
答案 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循环以显示数据表。
:)