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. THEN 現在の ROW Link1 から選択します (この場合、値は 3 です)。

次に、ID = 'Link1 value' (つまり 3) である LINKS-TABLE から選択します。

次に、現在の行からリンクを選択します

クエリの最終結果は「C リンク」になります。LinkCollectionID を 1 に変更すると、最終結果は B リンクになります。

どうにか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

このクエリは、探しているリンク フィールドを提供します。

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 に答える
0

次のクエリは、LinkCollection が常に 1 つの行を返すと仮定して機能します

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 に答える