从PostgreSQL数据库中提取1:n关系

时间:2017-02-23 18:54:44

标签: php postgresql foreign-keys

假设我有两个这样的表

| 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)";

然后这三个结果包含所有需要的信息,并且不超过需要。

0 个答案:

没有答案