これらの3つのテーブルからBuilding、RoomMin、RoomMaxを選択し、別々のフィールドに表示する必要があります。私は、特定の検索しようとしているので、私の上記のクエリがローを返さない3つのテーブルから行を選択して1行に表示
SELECT GenericTableData.GenericTableDataID, ValueString AS Building, ValueString AS RoomMin, ValueString AS RoomMax
FROM GenericTableData INNER JOIN
GenericTableDataField ON GenericTableData.GenericTableDataID = GenericTableDataField.GenericTableDataID INNER JOIN
GenericTableDefinition ON GenericTableData.GenericTableDefinitionID = GenericTableDefinition.GenericTableDefinitionID INNER JOIN
GenericTableDefinitionField ON GenericTableDataField.GenericTableDefinitionFieldID = GenericTableDefinitionField.GenericTableDefinitionFieldID AND
GenericTableDefinition.GenericTableDefinitionID = GenericTableDefinitionField.GenericTableDefinitionID
WHERE GenericTableDefinitionField.GenericTableDefinitionFieldID = 13 -- Access Level
AND GenericTableData.GenericTableDataID IN ( -- RoomMin
SELECT GenericTableData.GenericTableDataID
FROM GenericTableData INNER JOIN
GenericTableDataField ON GenericTableData.GenericTableDataID = GenericTableDataField.GenericTableDataID INNER JOIN
GenericTableDefinition ON GenericTableData.GenericTableDefinitionID = GenericTableDefinition.GenericTableDefinitionID INNER JOIN
GenericTableDefinitionField ON GenericTableDataField.GenericTableDefinitionFieldID = GenericTableDefinitionField.GenericTableDefinitionFieldID AND
GenericTableDefinition.GenericTableDefinitionID = GenericTableDefinitionField.GenericTableDefinitionID
WHERE ValueInteger <= '235'
AND GenericTableData.GenericTableDataID IN (-- List of data that are associated with B1
SELECT GenericTableData.GenericTableDataID
FROM GenericTableData INNER JOIN
GenericTableDataField ON GenericTableData.GenericTableDataID = GenericTableDataField.GenericTableDataID INNER JOIN
GenericTableDefinition ON GenericTableData.GenericTableDefinitionID = GenericTableDefinition.GenericTableDefinitionID INNER JOIN
GenericTableDefinitionField ON GenericTableDataField.GenericTableDefinitionFieldID = GenericTableDefinitionField.GenericTableDefinitionFieldID AND
GenericTableDefinition.GenericTableDefinitionID = GenericTableDefinitionField.GenericTableDefinitionID
WHERE ValueString LIKE 'B1'
)
AND GenericTableDefinitionField.GenericTableDefinitionFieldID = 11
)
AND GenericTableData.GenericTableDataID IN ( -- RoomMax
SELECT GenericTableData.GenericTableDataID
FROM GenericTableData INNER JOIN
GenericTableDataField ON GenericTableData.GenericTableDataID = GenericTableDataField.GenericTableDataID INNER JOIN
GenericTableDefinition ON GenericTableData.GenericTableDefinitionID = GenericTableDefinition.GenericTableDefinitionID INNER JOIN
GenericTableDefinitionField ON GenericTableDataField.GenericTableDefinitionFieldID = GenericTableDefinitionField.GenericTableDefinitionFieldID AND
GenericTableDefinition.GenericTableDefinitionID = GenericTableDefinitionField.GenericTableDefinitionID
WHERE ValueInteger >= '235'
AND GenericTableData.GenericTableDataID IN (-- List of data that are associated with B1
SELECT GenericTableData.GenericTableDataID
FROM GenericTableData INNER JOIN
GenericTableDataField ON GenericTableData.GenericTableDataID = GenericTableDataField.GenericTableDataID INNER JOIN
GenericTableDefinition ON GenericTableData.GenericTableDefinitionID = GenericTableDefinition.GenericTableDefinitionID INNER JOIN
GenericTableDefinitionField ON GenericTableDataField.GenericTableDefinitionFieldID = GenericTableDefinitionField.GenericTableDefinitionFieldID AND
GenericTableDefinition.GenericTableDefinitionID = GenericTableDefinitionField.GenericTableDefinitionID
WHERE ValueString LIKE 'B1'
)
AND GenericTableDefinitionField.GenericTableDefinitionFieldID = 12
)
:
GenericTableDataID Building
17 B1
18 B1
20 B1
RoomMinDataID RoomMin
17 200
20 100
RoomMaxDataID RoomMax
17 299
18 399
望ましい結果
GenericTableDataID Building RoomMin RoomMax
17 B1 200 299
失敗し
テーブル内部の部屋番号を選択します。ここで
あなたはどんな質問をしましたか?コード生成をサービスとして期待するだけではない。 –
私は今私の試行を追加しました。申し訳ありませんが、私は以前にそれを示していませんでした。私はこのSOの質問から合体とピボットのようなピボットを試みるべきだと私は信じていた:http://stackoverflow.com/questions/5014656/query-to-merge-multiple-rows-into-into-distinct-rows-with-multiple - 列。 お返事いただきありがとうございました。私は今追求する良い方向がある。私はこのように複数のテーブルをつかむことに慣れていない。私はあなたの提案をすべて試し、最高の答えとして1つマークします。 –