0

我知道有一些类似的问题,但我还需要做一些其他的事情。这是我的数据库设计:

链接

ID  Link
--  --------
 1  A Link
 2  B Link
 3  C Link

链接集合

LinkCollectionID  Link1  Link2  Link3
----------------  -----  -----  -----
               1      2      1      3
               2      3      2      2
               3      1      3      1

我想在 MYSQL 中执行的查询是

  1. Select from LinkCollection-TABLE where LinkCollectionID = '2'

  2. 然后从当前 ROW Link1 中选择(在本例中值为 3)

然后从 LINKS-TABLE 中选择 ID = 'Link1 value'(即 3)

然后从当前行选择链接

查询的最终结果应该是“C Link”。如果我们将 LinkCollectionID 更改为 1,那么最终结果应该是 B Link

我想以某种方式在php中输出。

我尝试使用 JOINS 和其他东西来阅读我的方法,但我就是想不通。希望我的例子足够清楚。

4

3 回答 3

2

尝试这个

    select t2.Link1 , t1.Link from LinkCollection t2
    INNER JOIN  LINKS t1
    ON t2.link1 = t1.id
    WHERE LinkCollectionID = '2' 

在这里演示

于 2013-08-20T17:13:50.300 回答
0

假设 LinkCollection 将始终返回一行,则以下查询将起作用

select L.Link from Link L where L.id = (select Lc.link1 from LinkCollection Lc where Lc.LinkCollectionID=2)

为了安全起见,您可以在子查询中添加限制 1

select L.Link from Link L where L.id = (select Lc.link1 from LinkCollection Lc where Lc.LinkCollectionID=2 limit 1)
于 2013-08-20T17:13:16.347 回答
0

此查询将为您提供您正在寻找的链接字段:

SELECT l.Link 
FROM LinkCollection lc
INNER JOIN LINKS l ON lc.Link1 = l.ID
WHERE lc.LinkCollectionID = '2' 

SQLFIDLE:http ://www.sqlfiddle.com/#!2/e9e38/6/0

于 2013-08-20T17:24:44.833 回答