THETA Style in SQL Server 2000 bei OUTER JOIN Abfragen
Hallo Leute,
ich habe ein Problem mit dem THETA Style bei einer Abfrage. Im Query Analyzer liefert folgende Abfrage eine Fehlermeldung
Abfrage:
SELECT m.member_no AS Mitgliedsnummer,
m.lastname + ' '+ m.middleinitial+' '+ m.firstname AS Name,
Convert(char(8),re.log_date,4) AS Log_Date,
re.ISBN,
t.title
FROM member m, item i, title t, reservation re
WHERE re.isbn = i.isbn
AND t.title_no = i.title_no
AND m.member_no IN (250,341, 1675)
AND m.member_no *= re.member_no
ORDER BY m.member_no
Fehler:
Server: Nachr.-Nr. 303, Schweregrad 16, Status 1, Zeile 1
Die reservation-Tabelle ist ein inneres Mitglied einer OUTER JOIN-Klausel. Dies ist unzulässig, wenn die Tabelle auch an einer regulären Verknüpfungsklausel beteiligt ist.
Sobald ich diese Abfrage im VIEW Builder des Enterprise Managers einfüge wird sie beim Ausführen automatisch umgewandelt und das richtige Ergebnis angezeigt.
Hier die umgewandelte Version:
SELECT TOP 100 PERCENT m.member_no AS Mitgliedsnummer, m.lastname + ' ' + m.middleinitial + ' ' + m.firstname AS Name, CONVERT(char(8), re.log_date,
4) AS Log_Date, re.isbn, t.title
FROM dbo.reservation re INNER JOIN
dbo.item i ON re.isbn = i.isbn INNER JOIN
dbo.title t ON i.title_no = t.title_no RIGHT OUTER JOIN
dbo.member m ON re.member_no = m.member_no
WHERE (m.member_no IN (250, 341, 1675))
ORDER BY m.member_no
Für mich zeigt dies, dass die Syntax im THETA Style eigentlich richtig ist. Worin liegt das Problem oder mache ich einen gedanklichen Fehler in der Reihenfolge der Tabellen. Ich habe es auch schon versucht, den OUTER JOIN in eine VIEW zu speichern und dann die ergänzenden Angaben auszuwählen - gleicher Fehler.
Vielen Dank für Hilfen !
Gruß Soeren
System:
SQL Server 2000 mit SP 4
auf Win 2k Server
ich habe ein Problem mit dem THETA Style bei einer Abfrage. Im Query Analyzer liefert folgende Abfrage eine Fehlermeldung
Abfrage:
SELECT m.member_no AS Mitgliedsnummer,
m.lastname + ' '+ m.middleinitial+' '+ m.firstname AS Name,
Convert(char(8),re.log_date,4) AS Log_Date,
re.ISBN,
t.title
FROM member m, item i, title t, reservation re
WHERE re.isbn = i.isbn
AND t.title_no = i.title_no
AND m.member_no IN (250,341, 1675)
AND m.member_no *= re.member_no
ORDER BY m.member_no
Fehler:
Server: Nachr.-Nr. 303, Schweregrad 16, Status 1, Zeile 1
Die reservation-Tabelle ist ein inneres Mitglied einer OUTER JOIN-Klausel. Dies ist unzulässig, wenn die Tabelle auch an einer regulären Verknüpfungsklausel beteiligt ist.
Sobald ich diese Abfrage im VIEW Builder des Enterprise Managers einfüge wird sie beim Ausführen automatisch umgewandelt und das richtige Ergebnis angezeigt.
Hier die umgewandelte Version:
SELECT TOP 100 PERCENT m.member_no AS Mitgliedsnummer, m.lastname + ' ' + m.middleinitial + ' ' + m.firstname AS Name, CONVERT(char(8), re.log_date,
4) AS Log_Date, re.isbn, t.title
FROM dbo.reservation re INNER JOIN
dbo.item i ON re.isbn = i.isbn INNER JOIN
dbo.title t ON i.title_no = t.title_no RIGHT OUTER JOIN
dbo.member m ON re.member_no = m.member_no
WHERE (m.member_no IN (250, 341, 1675))
ORDER BY m.member_no
Für mich zeigt dies, dass die Syntax im THETA Style eigentlich richtig ist. Worin liegt das Problem oder mache ich einen gedanklichen Fehler in der Reihenfolge der Tabellen. Ich habe es auch schon versucht, den OUTER JOIN in eine VIEW zu speichern und dann die ergänzenden Angaben auszuwählen - gleicher Fehler.
Vielen Dank für Hilfen !
Gruß Soeren
System:
SQL Server 2000 mit SP 4
auf Win 2k Server
Please also mark the comments that contributed to the solution of the article
Content-Key: 85822
Url: https://administrator.de/contentid/85822
Printed on: May 4, 2024 at 07:05 o'clock