我想要从中选择两个表。我有一个名为articles
的表,它为我的内容管理系统存储了各种文章,我有另一个名为articles_meta_data
的表,它存储了articles表的元数据。要获取文章的元数据,请使用article Id
从articles_meta_data中进行选择。我的代码在这里完美运行。有没有办法可以优化代码并使其更快?
$result = mysql_query("SELECT * FROM articles");
while ($row = mysql_fetch_object($result)) {
$result2 = mysql_query("SELECT * FROM articles_meta_data WHERE article_ID=" . $row->ID);
while ($row2 = mysql_fetch_object($result2)) {
var_dump($row2);
}
}
答案 0 :(得分:6)
加入表格,这样您只需查询一次数据库,例如
SELECT b.*
FROM articles a
INNER JOIN articles_meta_data b
ON a.ID = b.article_ID
要进一步了解加入,请参阅下面的链接
答案 1 :(得分:0)
您应该使用联接查询,这样您就不需要触发两个查询,但首先您必须决定使用哪个联接进行此检查此链接http://www.firebirdfaq.org/faq93/
这里我们将使用JOIN,以便选择具有相同值的列为articles.ID和articles_meta_data.article_ID的记录
SELECT *,articles_meta_data.field1,articles_meta_data.field2 from articles JOIN articles_meta_data ON articles.ID = articles_meta_data.article_ID
答案 2 :(得分:-1)
你也可以这样做..
Select * from articles JOIN articles_meta_data ON ID = article_ID
希望这也可能以其他方式帮助你。