我的数据库包含一个名为sites
的表(其中包含一些字段,包括site_ID
字段),以及来自sites表的每个site_ID
条目的一组表。
所以db看起来像:
- sites [site_ID, blah]
- site_1_articles [title, content]
- site_1_comments [author, comment]
- site_2_articles [title, content]
- site_2_comments [author, comment]
- site_3_articles [title, content]
- site_3_comments [author, comment]
etc...
我有一个select查询,它从sites
表中提取所有字段:
SELECT * FROM sites
WHERE ....
如何从相应的title
表中获取site_[site_ID]_articles
字段?
我认为我在使用JOIN的相同查询中需要这个,因为表的数量非常大(超过1000),并且执行1000次选择可能不是这样做的方法:)
答案 0 :(得分:3)
不,您不能动态引用表(除非使用存储过程来创建预准备语句)
你应该设计你的数据库,挖出一个site_articles
表,然后在你的查询中存储一个site_id
列:
SELECT *
FROM sites s JOIN site_articles sa ON s.site_id = sa.site_id
WHERE ....
答案 1 :(得分:1)
您可以加入多个条件,或将其添加到WHERE子句
...
ON (blah = boo) AND (some_id = matching_field_in_second_table)
...
或
...
WHERE (some_id = matching_field_in_second_table)
答案 2 :(得分:1)
SELECT blah, some_id, second_table.some_field FROM first_table
LEFT JOIN second_table
ON second_table.some_field = some_id
WHERE ....
这就是你想要的吗?
答案 3 :(得分:1)
最好是重新设计数据库。一个表文章,其中id列作为主键,表注释带有article_id列。然后你加入吧。