fehler in sql syntax?
saar
- datenbank
0 wahsaga2 Vinzenz Mai0 saar
hallo zusammen, ich hab ein problem, ich bastelle mir mit php ein select statement zusammen und führe es aus.
nun finde ich keinen datensatz, obwohl einer da ist.
hier mal das statement:
SELECT best.id_bestellvorgang, best.id_dienststelle, best.id_lieferant, best.id_art_garantie, best.id_art_beschaffung, best.kennzeichen, best.datum_lieferung, best.beschreibung, best.preis, best.dauer_garantie, best.dauer_gewaehrleistung, best.reaktionszeit, best.instandsetzungsdauer, best.status, best.ware, best.seriennummer, best.vertrag_intern, best.vertrag_extern, inst.id_bestellvorgang, inst.id_dienststelle FROM bestellvorgang best, installationsort inst WHERE best.id_bestellvorgang>0 AND best.id_art_beschaffung=1
hoffe ihr könnt mir helfen
hi,
ich bastelle mir mit php ein select statement zusammen und führe es aus.
nun finde ich keinen datensatz, obwohl einer da ist.hier mal das statement:
Und wenn du das "direkt" testest, also per Copy&Paste über ein Frontend für deine Datenbank, was bekommst du dann?
gruß,
wahsaga
Und wenn du das "direkt" testest, also per Copy&Paste über ein Frontend für deine Datenbank, was bekommst du dann?
keinen datensatz gefunden!
die syntax müsste doch stimmen oder?
keinen datensatz gefunden!
die syntax müsste doch stimmen oder?
Wieso behauptest du dann FEHLER IN SQL SYNTAX? Ich sehe da kein Fehler und er spuckt dir ja auch keine Fehlermeldung aus sondern sagt lediglich dass kein Datensatz zu deiner Anfrage vorliegt. Vielleicht solltest du mal schauen ob überhaupt ein Ergebnis mit der Anfrage erzielt werden kann!
Hallo
hier mal das statement:
das syntaktisch richtig aussieht, aber neben dem bereits gesagten
SELECT
best.id_bestellvorgang,
best.id_dienststelle,
best.id_lieferant,
best.id_art_garantie,
best.id_art_beschaffung,
best.kennzeichen,
best.datum_lieferung,
best.beschreibung,
best.preis,
best.dauer_garantie,
best.dauer_gewaehrleistung,
best.reaktionszeit,
best.instandsetzungsdauer,
best.status,
best.ware,
best.seriennummer,
best.vertrag_intern,
best.vertrag_extern,
inst.id_bestellvorgang,
inst.id_dienststelle
FROM
bestellvorgang best,
installationsort inst
WHERE
best.id_bestellvorgang > 0
AND best.id_art_beschaffung = 1
vermisse ich die JOIN-Klausel
Da Du keine Fehler von Deinem DBMS gemeldet bekommst, gehe ich davon aus,
dass es einfach keine Datensätze gibt.
Eine mögliche Erklärung wäre folgende:
Da Du die JOIN-Klausel weglässt, wird das kartesische Produkt beider Tabellen gebildet. Wenn es in der Tabelle installationsort keinen Datensatz gibt, dann kann es in der Ergebnismenge keinen Datensatz geben. Möchtest Du alle Datensätze haben, auch denen kein Datensatz in der Tabelle installationsort zugeordnet ist, dann wäre ein LEFT JOIN angebracht:
SELECT
best.id_bestellvorgang,
best.id_dienststelle,
best.id_lieferant,
best.id_art_garantie,
best.id_art_beschaffung,
best.kennzeichen,
best.datum_lieferung,
best.beschreibung,
best.preis,
best.dauer_garantie,
best.dauer_gewaehrleistung,
best.reaktionszeit,
best.instandsetzungsdauer,
best.status,
best.ware,
best.seriennummer,
best.vertrag_intern,
best.vertrag_extern,
inst.id_bestellvorgang,
inst.id_dienststelle
FROM
bestellvorgang best
LEFT JOIN
installationsort inst
ON best.id_bestellvorgang = inst.id_bestellvorgang
WHERE
best.id_bestellvorgang > 0
AND best.id_art_beschaffung = 1
Mehr zu JOINs gibts auf SELFHTML aktuell:
Freundliche Grüße
Vinzenz
Freundliche Grüße
Vinzenz
Danke, jetzt hats geklappt!