我在建立查询时遇到问题。我可以在3个不同的查询中做我想做的事情。

SELECT id FROM table1 WHERE url LIKE '%/$downloadfile'
put that in $url_id
SELECT item_id FROM table2 WHERE rel_id = '$url_id'"
put that in $item_id
SELECT rel_id FROM table2 WHERE rel_id = '$item_id' AND field_id = '42'"
put that in $user_id

但从阅读连接和内部连接的示例来看,我认为有一种更优雅的方法。我无法集中精力写一个更好的查询(但我想)我可以描述它应该如何进行:
表1
字段:id,url
表2
字段项id,相关id,字段id
我知道table1.url的最后一部分(如“%/$filename”),因此我选择table1.id。
table1.id等于table2.rel_id中的一个条目。因此获取该条目并选择table2.item_id。
在表2中有另一个具有相同表2.item_id的条目,它将具有表2.field_id='42'
最后,我需要的值是table2.rel_id,其中table2.field_id是42。
我将获取该值并将其放入$user\u id
这可以用一个使用连接/内部连接的查询来完成吗?

最佳答案

SELECT url, second.rel_id AS user_id
FROM table1
INNER JOIN table2 AS first
  ON table1.id=first.rel_id
INNER JOIN table2 AS second
  ON first.item_id=second.rel_id
WHERE second.field_id='42'
  AND table1.url LIKE '%/:downloadfile'

关于php - 帮助掌握(内在?),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2504273/

10-14 13:55