2013-08-20 58 views
0

我知道有一些类似的问题,但还有一些其他事情我也需要做。 这里是我的数据库设计:使用来自2个表的数据

LINKS

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

LinkCollection

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. THEN从当前行链接1(在这种情况下具有值3)

选择然后从LINKS-TABLE其中ID = '链接1值'(它是3)

选择

然后从当前行选择链接

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

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

我试图用JOINS和其他东西来阅读我的这种方式,但我无法弄清楚。希望我的例子足够清楚。

+1

请使用代码风格来写你的代码中的职位。 –

回答

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) 
2

试试这个

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

DEMO HERE

+0

帽子给你。非常感谢你为这个不错的解决方案。 – Gruffer

+0

你欢迎先生:)! –

+0

@ user2700729请务必接受答案,以解决问题。帮助其他人 –

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

+0

:)您提供了新的东西?或者只是喜欢复制:)。 –

+0

@echo_Me看来我在编辑中卡住了太多时间:) ...顺便说一句... OP只查找链接作为输出:) –

相关问题