Ich muss aus diesen 3 Tabellen Building, RoomMin und RoomMax auswählen und sie in separaten Feldern darstellen.Wählen Sie Zeilen aus 3 Tabellen aus und zeigen Sie sie in 1 Zeile an.
Tabellen
GenericTableDataID Building
17 B1
18 B1
20 B1
RoomMinDataID RoomMin
17 200
20 100
RoomMaxDataID RoomMax
17 299
18 399
Gewünschtes Ergebnis
GenericTableDataID Building RoomMin RoomMax
17 B1 200 299
fehlgeschlagen Versuch:
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
)
Meine obige Abfrage zurückgeben keine Zeilen, weil ich für einen bestimmten suchen bin versucht, Gebäuderaumnummer im inneren WO AUSWÄHLT.
Und welche Abfrage haben Sie versucht? Von Ihnen wird erwartet, dass Sie nicht nur erwarten, dass die Codegenerierung als Service dient. –
Ich habe meinen Versuch jetzt hinzugefügt. Tut mir leid, dass ich es nicht früher gezeigt habe. Ich wurde zu der Überzeugung geführt, dass ich versuchen sollte, aus dieser SO-Frage heraus zu koaleszieren und zu drehen: http://stackoverflow.com/questions/5014656/query-to-merge-multiple-rows-into-into-disttinct-rows-with-multiple -Säulen. Vielen Dank an alle, die geantwortet haben. Ich habe jetzt eine gute Richtung. Ich bin es nicht gewohnt, auf diese Weise von mehreren Tischen zu greifen. Ich werde alle deine Vorschläge versuchen und eins als die beste Antwort markieren. –