2013-07-10 59 views
1

我正在做一个foreach循环,并选择每个等于该部分名称的行。但是,我还需要显示不等于任何部分名称的所有结果。以下是我的代码中选择与段名相同的行的部分。从MySQL中选择它不等于其他表中的行

$result2 = mysqli_query($con, "SELECT * FROM sections ORDER BY `order`"); 
$sectionnames = array(); 
while($row = mysqli_fetch_array($result2)) { 
    $sectionnames[] = $row['sectionname']; 
} 

foreach ($sectionnames as $sectionname) { 
    $result = mysqli_query($con,"SELECT * FROM faq WHERE section = '$sectionname' ORDER BY `order`"); 

回答

4

你的意思是这样的:

SELECT * FROM `faq` WHERE `section` NOT IN (SELECT `sectionname` FROM `sections`) 

这将选择所有常见问题的项目不具有一个部分与部分表中的任何部分名称共享一个名称?如果不是这样的话,或许juergen d发布的是你所需要的。有一点你不清楚你的最终目标是什么,所以请随时澄清,我会更新。

+0

这正是我需要的谢谢 –

1

可以使用left join拿到1个查询数据

SELECT * 
FROM sections s 
left join faq f on f.section = s.sectionname 
ORDER BY s.`order`, f.`order` 
1
SELECT section FROM Faq 
    LEFT JOIN Sections 
     ON Faq.section = Sections.sectionname 
WHERE Sections.sectionname IS NULL 
2

我觉得应该是,

$result = mysqli_query ($con, "SELECT * FROM faq WHERE section NOT IN 
         (SELECT sectionname FROM sections)"); 
相关问题