Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 选择两个表并设置订购优先级_Php_Mysql - Fatal编程技术网

Php 选择两个表并设置订购优先级

Php 选择两个表并设置订购优先级,php,mysql,Php,Mysql,我有两张桌子, ir1\u police包含向管理员报告的消息。 ir1\u police\u flag,管理员可以在1到2之间标记报告者。(1表示中等2表示低,无表示高优先级) 如果有人试图报告一些不真实的事情。管理员将把它标记为1或2。 所以我会列出一份报告的清单,第一个是高优先级,第二个是中等优先级,最后是低优先级 我使用mysql语句,但有一个问题。如果没有显示任何内容,则不会显示任何内容。或者,如果仅存在,则显示它们处于ir\u police\u标志上 如果ir1\u police\u

我有两张桌子,
ir1\u police
包含向管理员报告的消息。
ir1\u police\u flag
,管理员可以在1到2之间标记报告者。(1表示中等2表示低,无表示高优先级)

如果有人试图报告一些不真实的事情。管理员将把它标记为1或2。 所以我会列出一份报告的清单,第一个是高优先级,第二个是中等优先级,最后是低优先级

我使用mysql语句,但有一个问题。如果没有显示任何内容,则不会显示任何内容。或者,如果仅存在,则显示它们处于
ir\u police\u标志上

如果
ir1\u police\u flags上没有记录,我不知道如何选择它们

SELECT * FROM ir1_police 
JOIN ir1_police_flags on ir1_police_flags.uid = `ir1_police.uid 
WHERE 
ir1_police.status=0 AND ir1_police.parent_id=0 
ORDER BY ir1_police.time DESC

JOIN
替换为
LEFT JOIN
。前者仅从找到匹配项的表中选择行,而后者从第一个表中选择所有行,即使在另一个表中没有匹配项

然后,您可以将第二个字段添加到
ORDER BY

SELECT * FROM ir1_police
LEFT JOIN ir1_police_flags ON ir1_police_flags.uid = ir1_police.uid
WHERE ir1_police.status=0 AND ir1_police.parent_id=0 
ORDER BY
    ir1_police_flags.flag ASC,
    ir1_police.time DESC
注意,
LEFT JOIN
生成的结果中,所有
ir1\u police\u标志
的字段都是
NULL
,在此表中没有匹配项。这在您的情况下是完美的,因为就
orderby
而言,
NULL
被认为比任何值都小



您的应用程序可能会证明此结构是正确的,但您应该问问自己,此标志是否不应该只是表中的一列。

按ir1\u police\u flags.flag ASC、irw\u police.time DESC排序。
问题是如果ir1\u police\u标志上没有任何内容,什么都不会显示/但我需要显示所有应该显示给ir1_警察的内容。此外,如果ir1_police_标志上除了@Mike comment之外,equals user idAlso旁边还显示了任何内容,那么如果不需要在ir1_police_标志中记录最高优先级,请使用left join