2016-04-23 4 views
0

Ich habe die folgenden TabellenTabellen verbinden und SQL-Abfrage schreiben, um Daten abzurufen

customer 
custID | name | address 

Und

magazinesubscription 
customerID | magazinename | cost | startdate | enddate 

newspapersubscription 
customerID | newspapername | cost | startdate | enddate 

newspaper 
newspapername | cost | publishedby 

magazine 
magazinename | cost | publishedby 

Nun, was ich will, ist für jeden Kunden zu drucken, deren Name, Anschrift, ihre Zeitschriftenabonnement, ihre Zeitungsabonnements, die den Namen und den Herausgeber des Magazins und der Zeitung und das Enddatum für jedes dieser Abonnements enthalten.

Ich habe versucht, dies zu tun, aber es funktioniert nicht.

select * from customer 
JOIN 
(select customerID, newspapername, enddate, n.publishedby 
from newspapersubscription ns and newspaper n 
where published in(select publishedby 
        from newspaper 
        where ns.newspapername = n.newspapername) 
UNION 
select customerID, magazinename, enddate, m.publishedby 
from magazinesubscription ms and magazine m 
where published in(select publishedby 
        from magazine 
        where ms.newspapername = m.newspapername)); 
+0

Warum denken Sie AND ist gültige Joining-Syntax? – APC

Antwort

0

Ich bin mir nicht sicher, was Sie mit der obigen Abfrage zu tun versuchen. Aber ich kann den Fehler in der Abfrage, die Sie geschrieben haben, zeigen.

and ist kein gültiges sql-Schlüsselwort, um Daten aus verschiedenen Tabellen zu übernehmen.

(select customerID, newspapername, enddate, n.publishedby 
from newspapersubscription ns, newspaper n 
where published in(select publishedby 
        from newspaper 
        where ns.newspapername = n.newspapername) 
UNION 
select customerID, magazinename, enddate, m.publishedby 
from magazinesubscription ms, magazine m 
where published in(select publishedby 
        from magazine 
        where ms.newspapername = m.newspapername)); 

Nachdem Sie das Ergebnis der oben genannten Abfrage erhalten. Sie treten mit der Kundentabelle ohne Bedingung zusammen. Dies verhält sich wie ein kartesisches Produkt aus zwei Tabellen, was dazu führt, dass alle Daten kombiniert werden.

Verwandte Themen