1

concept-relation3列を含むというテーブルがあります

(relationID, firstConceptID, secondConceptID)

concept2列を含むというテーブルがあります

(ID, name)

firstConceptIDsecondConceptIDの名前を取得したいrelationID = 22.

これが私が思いついたクエリです。

select * from (
      select name as source from concept where concept.ID in (
      select firstConceptID from `concept-relation` where relationID = 22
       ) 
) as e,
(
      select name as des from concept where concept.ID in (
      select secondConceptID from `concept-relation` where relationID = 22
     )
)as e

それはうまく機能しますが、そのようなクエリを実行するためのベストプラクティスは何ですか?

4

1 に答える 1

4

サブ選択/「IN」を回避するため、通常はベストプラクティスと見なされる、よりクリーンにするための自己結合が必要です。

SELECT C1.name, C2.name
FROM Concept C1
INNER JOIN concept_Relation CR 
  ON CR.FirstConceptID = C1.ID
INNER JOIN Concept C2 
  ON CR.SecondConceptID = C2.ID
WHERE CR.RelationID = 22
于 2012-05-19T19:29:16.200 に答える