假设我有两个这样的表
| items | | translations |
|_______| |______________|
| id |<---\ | id |
| name | \--->| head_id |
|_______| | translation |
|______________|
我有一组项目的ID,我需要提取它们的翻译。我想我可以像这样提取ID:
$ids = implode(', ', $input->ids);
$query = "SELECT id, name FROM items WHERE id IN ($ids)";
$resultIds = pg_query($dbconn, $query) or die(pg_last_error());
现在我需要获得每个项目的所有翻译。我只能想到循环遍历所有id并查询每个id的翻译。有没有更好的方法呢?
在撰写帖子时,脑海中浮现出另一个想法。我可以做三个选择,一个用于ID,如上所示,第二个和第三个用于
$query2 = "SELECT items.id, translations.id
FROM items, translations
WHERE items.id = translations.head_id and items.id IN ($ids)";
$query3 = "SELECT translations.id, translation
FROM items, translations
WHERE items.id = translations.head_id and items.id IN ($ids)";
然后这三个结果包含所有需要的信息,并且不超过需要。