JOIN
'Links'テーブルへのクエリで返される結果に、行ごとの'toTable'の値を条件として選択された'DisplayName'値を示す列も追加します。さらに、その'DisplayName'値は、列の連結の結果である場合があります。
私の質問は、どうすればこれを行うことができますか?
UNION ALL
条件付きの方法があるのだろうかと思いますが、個別のクエリを記述して組み合わせることができます
「リンク」テーブルの各エントリは、2つのテーブル(3つ以上のテーブルの可能性がある)のエントリのペア間のリンクを記述します。
リンクテーブル:
| LinkID | fromTable | fromID | toTable | toID |
| 1 | A | 1 | B | 1 |
| 2 | A | 1 | C | 2 |
| 3 | B | 1 | C | 1 |
| 4 | C | 1 | A | 1 |
必要なクエリ結果: WHERE Links.fromTable ='A' OR Links.fromTable='C'たとえば
| LinkID | fromTable | fromID | toTable | toID | DisplayName |
| 1 | A | 1 | B | 1 | Some Title |
| 2 | A | 1 | C | 2 | Loud-Quack |
| 4 | C | 1 | A | 1 | Linus |
異なる列を持つ3つのテーブル:
Table A:
| ID | Name |
| 1 | Linus |
-
Table B:
| ID | Title |
| 1 | some title |
-
Table C:
| ID | CategoryA | CategoryB |
| 1 | Bark | Softly |
| 2 | Quack | Loud |
-これは私がこれを行う方法ですUNION ALL
が、あまり柔軟ではありません:編集:実際には、以下が間違っていると思います、私は今これを見ています:
SELECT Links.*, A.Name AS DisplayName
FROM Links
JOIN A ON Links.toID = A.ID
WHERE Links.fromType IN ('A') AND Links.toType IN ('B')
UNION ALL
SELECT Links.*, CONCAT(C.CategoryB,'-',C.CategoryA) AS DisplayName
FROM Links
JOIN C ON Links.toID = C.ID
WHERE Links.fromType IN ('A') AND Links.toType IN ('C')