Oracle-Abfragen mit mehreren Tabellen
Ich versuche, display Freiwilligen Informationen mit Pflicht und was die Leistung zugeordnet ist.
Ich möchte, um diese Informationen anzuzeigen. Allerdings, wenn ich die Abfrage ausführen, wird es nicht sammeln, den anderen Tag von der gleichen Leistung. Und auch availability_date vermischt wird. Ist es richtig Abfragen? Ich bin nicht sicher, es ist die richtige Abfrage.
Könnten Sie mir etwas feedback für mich?
Danke.
Abfrage ist hier.
SELECT Production.name, performance.performance_date, volunteer_duty.availability_date, customer.name "Customer volunteer", volunteer.volunteerid, membership.name "Member volunteer", membership.membershipid
FROM Customer, Membership, Volunteer, volunteer_duty, duty, performance_duty, performance, production
WHERE
Customer.customerId (+) = Membership.customerId AND
Membership.membershipId = Volunteer.membershipId AND
volunteer.volunteerid = volunteer_duty.volunteerid AND
duty.dutyid = volunteer_duty.dutyid AND
volunteer_duty.dutyId = performance_duty.dutyId AND
volunteer_duty.volunteerId = performance_duty.volunteerId AND
performance_duty.performanceId = performance.performanceId AND
Performance.productionId = production.productionId
--Bild-- Hinzugefügt
Ergebnis:
InformationsquelleAutor wholee1 | 2012-04-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Abfrage scheint vernünftig, in Bezug auf es dass, was zu sein scheinen die entsprechenden join-Bedingungen zwischen allen Tabellen. Es ist mir nicht klar, welches Problem Sie mit den Ergebnissen; es könnte helfen, wenn du genauer erklärt und/oder zeigten eine relevante Teilmenge der Daten.
Jedoch, da Sie sagen, es gibt einige Frage im Zusammenhang mit
availability_date
mein Erster Gedanke ist, dass Sie wollen, um eine Bedingung auf die Spalte, um sicherzustellen, dass ein freiwilliger ist für die gegebene Aufgabe auf das Datum einer bestimmten Leistung. Dies könnte bedeuten, einfach das hinzufügenvolunteer_duty.availability_date = performance.performance_date
zu der Abfrage von Bedingungen.Meine Allgemeine Empfehlung ist, starten Sie das schreiben der Abfrage von Grund auf neu, hinzufügen einer Tabelle zu einem Zeitpunkt, und die Verwendung des ANSI-join-syntax. Dadurch wird es klarer, die Bedingungen sind in Bezug auf die Verknüpfungen, und wenn Sie fügen Sie eine Tabelle zu einer Zeit, hoffentlich sehen Sie den Punkt, an dem die Ergebnisse falsch läuft.
Beispielsweise würde ich wahrscheinlich mit diesem zu starten:
Wenn, der Ergebnisse liefert, die Sinn machen, dann würde ich gehen, um eine Verknüpfung hinzuzufügen, um
performance_duty
und die Abfrage ausführen. Et cetera.InformationsquelleAutor Dave Costa
Schlage ich vor, dass Sie ausdrücklich schreiben, SCHLIEßT sich, anstatt der WHERE-Syntax.
Über INNER JOINs der Abfrage, die Sie beschreiben, könnte wie folgt Aussehen:
InformationsquelleAutor Viehzeug