Entwickler-Ecke
Datenbanken - query falsch???
Morpheus1572 - Mi 17.09.08 14:35
Titel: query falsch???
moin,
wenn ich diesen Query starte, bekomme ich als Antwort nicht den inhalt vom feld des 50sten ID's sondern vom ersten.
Kann mir jemand sagen why?
Delphi-Quelltext
1:
| ADOQuery1.SQL.Text:='SELECT Tour FROM Tour WHERE TID = 50'; |
und JA, es existieren mehr als 50 einträge. ;-)
ene - Mi 17.09.08 14:44
Ich würd ja eher mit keiner Antwort rechnen. Ist TID eine Zahl auf Tabellenebene? Gibt es die ID vielleicht doppelt?
Morpheus1572 - Mi 17.09.08 14:47
DB = ACCESS
TABName : Tour
Feld ID : AutoIncrement
Feld Tour: Text
brauchst du noch mehr infos?
Warum keine Antwort? ich bekomme aber eine (nur die Falsche)...
Gruß Morph.
jaenicke - Mi 17.09.08 14:53
Titel: Re: query falsch???
Morpheus1572 hat folgendes geschrieben: |
Delphi-Quelltext 1:
| ADOQuery1.SQL.Text:='SELECT Tour FROM Tour WHERE TID = 50'; | |
Morpheus1572 hat folgendes geschrieben: |
DB = ACCESS
TABName : Tour
Feld ID : AutoIncrement
Feld Tour: Text |
Wie heißt das Feld denn nun?
Morpheus1572 - Mi 17.09.08 14:57
Sorry, Fehlerteufel. Natürlich heißt es TID!
MDX - Mi 17.09.08 15:20
Ist ganz einfach, du musst eine LIKE abfrage nehemen:
Ausserdem, kannst du nicht TID abfragen, wenn du es gar nicht auswählst, richtig ist also so:
Delphi-Quelltext
1:
| ADOQuery1.SQL.Text:='SELECT TID, Tour FROM Tour WHERE TID LIKE ''50'' '; |
Morpheus1572 - Mi 17.09.08 15:35
Hmmm... okay habe ich gemacht.
und wie kann ich mir nun das ergebnis zum beispiel in einem edit ansehen?
ich dachte das ginge so:
Delphi-Quelltext
1: 2:
| ds := DataSource1.DataSet; Edit1.Text := ds['Tour']; |
wenn ich das aber mache, bekomme ich immer noch die Tourenangabe von TID 1!!!
mir scheint dass da was nicht funzt mit meinem Query...
baka0815 - Mi 17.09.08 16:29
MDX hat folgendes geschrieben: |
| Ist ganz einfach, du musst eine LIKE abfrage nehemen |
Da bin ich jetzt aber mal auf 'ne Begründung gespannt.
Morpheus1572 - Mi 17.09.08 16:41
ne muss ich nicht.
funzt jetzt hatte noch nen schreibfehler drin. stundenlang draufgesehen und nüscht jeseeen... sorry. danke für die Hilfe.
ene - Do 18.09.08 07:03
MDX hat folgendes geschrieben: |
Ist ganz einfach, du musst eine LIKE abfrage nehemen:
Ausserdem, kannst du nicht TID abfragen, wenn du es gar nicht auswählst, richtig ist also so:
Delphi-Quelltext 1:
| ADOQuery1.SQL.Text:='SELECT TID, Tour FROM Tour WHERE TID LIKE ''50'' '; | |
Bitte was? Natürlich kannst du über Felder filtern, die du nicht auswählen musst. Und ein Like brauchst du
nur bei Textvergleichen
mit Wildcards, sonst braucht man das nicht.
@Morph Wenn man sich den SQL-String ausgeben läßt und ihn einfach in eine leere Abfrage kopiert, kommt man meistens in sehr kurzer Zeit auf den Fehler ;)
jasocul - Do 18.09.08 10:40
MDX hat folgendes geschrieben: |
Ist ganz einfach, du musst eine LIKE abfrage nehemen:
Ausserdem, kannst du nicht TID abfragen, wenn du es gar nicht auswählst, richtig ist also so:
Delphi-Quelltext 1:
| ADOQuery1.SQL.Text:='SELECT TID, Tour FROM Tour WHERE TID LIKE ''50'' '; | |
So ein Quatsch.
@Morpheus:
Deine Abfrage ist theoretisch korrekt. Du musst den Fehler woanders suchen.
baka0815 - Do 18.09.08 12:37
jasocul hat folgendes geschrieben: |
@Morpheus:
Deine Abfrage ist theoretisch korrekt. Du musst den Fehler woanders suchen. |
Er hat das Problem doch behoben.
Warum
MDX jedoch an dieser Stelle das LIKE empfiehlt, wüsste ich auch gerne.
MDX - Fr 19.09.08 13:47
Weil es bei mir nur mit LIKE ging, deshalb hatte ich LIKE gesagt!
Muss natürlich nicht überall so sein, aber damit geht es garantiert!
Robert.Wachtel - Fr 19.09.08 15:39
MDX hat folgendes geschrieben: |
| [...] aber damit geht es garantiert! |
Vollkommener Unsinn.
baka0815 - Fr 19.09.08 16:06
MDX hat folgendes geschrieben: |
| aber damit geht es garantiert! |
Solange man keine Platzhalter wie
% oder
_ (bei Oracle) verwendet, ist die Verwendung von
LIKE im Ergebnis identisch mit dem Gleichheitszeichen.
SQL-Anweisung
1:
| select * from tabelle where x like 'abc' |
SQL-Anweisung
1:
| select * from tabelle where x = 'abc' |
Das Ergebnis der beiden Queries ist identisch (bzw. sollte identisch sein).
LIKE macht nur sinn, wenn du wirklich mit Platzhaltern, also "so ähnlich wie", suchen willst.
SQL-Anweisung
1:
| select * from tabelle where x like '%ab_c%' |
alzaimar - Fr 19.09.08 18:10
baka0815 hat folgendes geschrieben: |
| [quote="[user]Solange man keine Platzhalter wie % oder _ (bei Oracle) verwendet, ist die Verwendung von LIKE im Ergebnis identisch mit dem Gleichheitszeichen. |
Fast: Prüfung auf Gleichheit berücksichtigt, falls eingestellt, Groß/Kleinschreibung, LIKE nicht.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!