![]() |
Datenbank: MySQL • Version: 5.0 • Zugriff über: ??
Problem bei Verketteter Abfrage
Hallo allerseits.
Ich habe ein Problem... Ich habe folgende Datenbankstruktur: Zitat:
Nun möchte ich per SELECT alle Felder von Ausleihvorgang haben bei denen das Datum von Ausgeliehen länger als 5 Tage zurück liegt und bei denen Aktiv=1 ist. Weiter möchte ich den entsprechenden Datensatz von Buecher haben,dessen Nummer in BuchNR steht. Und das selbe möchte ich gerne zu Nutzer über NutzerNR machen. Aber ich kriege das ganze irgendwie nicht richtig hin. Kann mir da jemand helfen? Gruß Teekeks |
Re: Problem bei Verketteter Abfrage
Wie wär's mit sowas:
SQL-Code:
(ungetestet, wäre aber jetzt so ungefähr das, was ich gemacht hätte ...)
select
* from Ausleihvorgang a join Nutzer n on n.Nummer = a.NutzerNR join Buecher b on b.Nummer = a.BuchNR where date_add(a.Ausgeliehen, interval 5 day) < now() and a.Aktiv = 1 |
Re: Problem bei Verketteter Abfrage
Ahhh, dazu benötigt man also join's...
Die hab ich noch nie so richtig kappiert ^^ Ich probiers mal so... |
Re: Problem bei Verketteter Abfrage
Hmmm, ich hab das ganze ein bischen abgewangelt:
SQL-Code:
Nun sagt der mir aber das er kein "Ausheihvorgang.Ausgeliehen" in seiner Feldliste Findet...
select
DATE_FORMAT(Ausleihvorgang.Ausgeliehen, ''%d.%m.%Y'') as ASeit, Buecher.Name as BName, Buecher.Autor as BAutor, Nutzer.Name as NName, Nutzer.Vorname as NVorname, Nutzer.Typ as NTyp, DAY(FROM_UNIXTIME(UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(Ausleihvorgang.Ausgeliehen))) as Dif from Ausleihvorgang a, Buecher b, Nutzer n join Nutzer on n.Nummer = a.NutzerNR join Buecher on b.Nummer = a.BuchNR where date_add(a.Ausgeliehen, interval 5 day) < now() and a.Aktiv = 1 Was mache ich da falsch? Gruß Teekeks |
Re: Problem bei Verketteter Abfrage
Du musst die Aliase schon verwenden - also statt "Ausleihvorgang.Ausgeliehen" halt "a.Ausgeliehen" , statt "Buecher.Name" dann "b.Name" usw. ;)
|
Re: Problem bei Verketteter Abfrage
Auch schon bevor ich diese Definiere?
Aha, gut. DANKE |
Re: Problem bei Verketteter Abfrage
Hmmm, nun bekomme ich den Fehler
Zitat:
|
Re: Problem bei Verketteter Abfrage
Hallo,
Zitat:
nicht in der Reihenfolge ab, wie es geschrieben wrd. Ausserdem ist dein join falsch. dein Code
SQL-Code:
so sollte es aber sein
from
Ausleihvorgang a, Buecher b, Nutzer n join Nutzer on n.Nummer = a.NutzerNR join Buecher on b.Nummer = a.BuchNR (die geänderte Join-Reihgenfolge beachten
SQL-Code:
from
Ausleihvorgang a join Buecher on b.Nummer = a.BuchNR join Nutzer on n.Nummer = a.NutzerNR Heiko |
Re: Problem bei Verketteter Abfrage
Und was ändert diese Reihenfolge jetzt daran?
Auch so bekomme ich das richtige Ergebnis... Gruß Teekeks |
Re: Problem bei Verketteter Abfrage
Hallo,
jo, aber nur weil das hier noch stehen hast
SQL-Code:
Das ist aber unnötig
Ausleihvorgang a, Buecher b, Nutzer n
und ohne die folgenden joins wäre das ein kartesisches Produkt über 3 komplette Tabellen. Es sieht so aus, als ober der SQL-Server das selber erkennt und "optimiert". Heiko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz