|
|
e-fee


: 08.05.2007 : 3297
|
| : 25.08.2010, 15:46 : SELECT Statement spinnt? MS Access |
|
|
Stehe vor einem Rätsel:
| Code: |
| SELECT * FROM tabelle WHERE feld <> 'meinstring' |
Feld ist Textfeld, kann leer sein,diesen String oder einen anderen enthalten. Leider bekomme ich nicht alle Datensätze zurück, die meinstring nicht enthalten. Bei Verwendung von NOT mit = dasselbe Problem, != geht nicht wegen Syntaxfehler.
Wenn ich die Bedingung in Klammern gesetzt verneine, bekomme ich korrekt nur die Datensätze mit meinstring.
In der Summe habe ich aber nur 500 + 1000 von 2500 Datensätzen, kann doch nicht sein!
Und es spielt auch keine Rolle, ob feld leer oder nicht!
Logikfehler oder Tabelle geschrottet? |
|
| Nach oben |
|
 |
net(t)worker Gast
|
| : 25.08.2010, 15:51 : SELECT Statement spinnt? MS Access |
|
|
und wenn du die SQL Abfrage mit einem ; am ende abschließt?
welche daten fehlen dir denn jeweils bei den einzelnen Abfragen.... also sind es z.B. die mit leerem textfeld? |
|
| Nach oben |
|
 |
profo


: 18.01.2007 : 1709
|
| : 25.08.2010, 16:18 : SELECT Statement spinnt? MS Access |
|
|
Mit der Abfrage solltest Du in der Tat alle Zeilen bekommen, bei denen feld nicht exakt "meinstring" lautet. Und vergleich doch noch mal die Summen von Deiner ersten mit der negierten Abfrage, also etwa:
| Code: |
SELECT (
(SELECT COUNT(*) FROM tabelle)
- (SELECT COUNT(*) FROM tabelle WHERE feld <> 'meinstring')
- (SELECT COUNT(*) FROM tabelle WHERE NOT (feld <> 'meinstring'))
) as diff; |
Wenn ungleich 0 ist Deine Tabelle wohl geschmolzen...
Ceterum censeo facebook esse delendam. |
|
| Nach oben |
|
 |
DanielS


: 03.08.2008 : 1177
|
| : 25.08.2010, 16:28 : Re: SELECT Statement spinnt? MS Access |
|
|
| e-fee hat Folgendes geschrieben: |
Und es spielt auch keine Rolle, ob feld leer oder nicht!
|
Vielleicht meinst Du das damit, aber ich erwähne es trotzdem mal:
SELECT * FROM tabelle WHERE feld <> 'meinstring' or feld IS NULL |
|
| Nach oben |
|
 |
e-fee


: 08.05.2007 : 3297
|
| : 25.08.2010, 16:35 : SELECT Statement spinnt? MS Access |
|
|
| net(t)worker hat Folgendes geschrieben: |
und wenn du die SQL Abfrage mit einem ; am ende abschließt? |
Oh Mann, Du Nase, wenn es daran gelegen hätte, dann hätte ich in meinem Script wohl 'nen Parsing-Fehler gekriegt, aber nicht eine unvollständige Menge an Datensätzen!
Außerdem war das doch jetzt eh nur ein angepasstes Beispiel, da verzichtet man schon mal auf das Semikolon am Ende, vor allem dann, wenn man den Beitrag im Zug auf dem Handy tipselt.
Und dass es keinen Zusammenhang gibt, ob das Textfeld leer ist oder nicht, hab ich oben ja schon geschrieben.
Ebenso ist es nicht von Bedeutung, ob ich das Statement in meinem Script ausführe oder in Access direkt.
Wenn ich keine einschränkende Bedingung habe, also
| Code: |
| SELECT * FROM tabelle; |
, werden auch wieder alle 2500 Datensätze angezeigt / ausgegeben.
@profo kann ich dann leider erst morgen ausprobieren, aber danke schon mal! Datenbank komprimieren und reparieren hab ich auch schon gemacht.
Sch... MS-Produkte ... manchmal! |
|
| Nach oben |
|
 |
e-fee


: 08.05.2007 : 3297
|
| : 25.08.2010, 16:38 : Re: SELECT Statement spinnt? MS Access |
|
|
| DanielS hat Folgendes geschrieben: |
| e-fee hat Folgendes geschrieben: |
Und es spielt auch keine Rolle, ob feld leer oder nicht!
|
Vielleicht meinst Du das damit, aber ich erwähne es trotzdem mal:
SELECT * FROM tabelle WHERE feld <> 'meinstring' or feld IS NULL |
Danke, wie gesagt scheint es ja keine Rolle zu spielen, aber ich nehme es mal als weitere Möglichkeit für morgen mit auf ... |
|
| Nach oben |
|
 |
Beloe007


: 05.03.2009 : 1732
|
| : 25.08.2010, 17:22 : SELECT Statement spinnt? MS Access |
|
|
| SELECT * FROM tabelle WHERE feld NOT LIKE 'meinstring'; |
|
| Nach oben |
|
 |
net(t)worker Gast
|
| : 25.08.2010, 17:23 : SELECT Statement spinnt? MS Access |
|
|
| Beloe007 hat Folgendes geschrieben: |
| SELECT * FROM tabelle WHERE feld NOT LIKE 'meinstring'; |
LIKE ist böse....  |
|
| Nach oben |
|
 |
e-fee


: 08.05.2007 : 3297
|
| : 25.08.2010, 17:55 : SELECT Statement spinnt? MS Access |
|
|
| net(t)worker hat Folgendes geschrieben: |
| Beloe007 hat Folgendes geschrieben: |
| SELECT * FROM tabelle WHERE feld NOT LIKE 'meinstring'; |
LIKE ist böse....  |
Und wird hier überdies nicht benötigt.
Ich muss dazu sagen, dass die Strings jeweils aus nur einem Token (="Wort") bestehen und es derzeit auch nur eine gute Handvoll verschiedene davon gibt (was aber nicht so bleiben muss!!!). |
|
| Nach oben |
|
 |
Beloe007


: 05.03.2009 : 1732
|
| : 25.08.2010, 18:18 : SELECT Statement spinnt? MS Access |
|
|
| e-fee hat Folgendes geschrieben: |
| net(t)worker hat Folgendes geschrieben: |
| Beloe007 hat Folgendes geschrieben: |
| SELECT * FROM tabelle WHERE feld NOT LIKE 'meinstring'; |
LIKE ist böse....  |
Und wird hier überdies nicht benötigt.
Ich muss dazu sagen, dass die Strings jeweils aus nur einem Token (="Wort") bestehen und es derzeit auch nur eine gute Handvoll verschiedene davon gibt (was aber nicht so bleiben muss!!!). |
Kommt wohl drauf an was in den Feldern drin steht und welche Kodierung diese haben...
http://dev.mysql.com/doc/refman/5.1/de/string-comparison-functions.html
| : |
| Gemäß dem SQL-Standard führt LIKE die Überprüfung auf Zeichenbasis durch, kann also Ergebnisse erzeugen, die sich von denen des Vergleichsoperators = unterscheiden: |
| Code: |
mysql> SELECT 'ä' LIKE 'ae' COLLATE latin1_german2_ci;
+-----------------------------------------+
| 'ä' LIKE 'ae' COLLATE latin1_german2_ci |
+-----------------------------------------+
| 0 |
+-----------------------------------------+
mysql> SELECT 'ä' = 'ae' COLLATE latin1_german2_ci;
+--------------------------------------+
| 'ä' = 'ae' COLLATE latin1_german2_ci |
+--------------------------------------+
| 1 |
+--------------------------------------+
|
|
|
| Nach oben |
|
 |
e-fee


: 08.05.2007 : 3297
|
| : 25.08.2010, 18:24 : SELECT Statement spinnt? MS Access |
|
|
| Mmh, keine Sonderzeichen drin. Und wenn in einem Feld genau gar kein Zeichen drin steht ... klappt es bei einigen und bei anderen nicht (und nein, da sind keine Leerzeichen etc. drin!) |
|
| Nach oben |
|
 |
Beloe007


: 05.03.2009 : 1732
|
| : 25.08.2010, 18:50 : SELECT Statement spinnt? MS Access |
|
|
Also ich hab von meinem Professor der DBA bei ner großen Bank war gelernt das man meistens LIKE verwenden soll... aber für den war MySQL Dreck und MS Access noch viel weniger wert. Für den gab es nur Oracle, natürlich sehr Praxisfeindlich.
Ich habe keine Ahnung wie es bei MS Access ist, MySQL benutze ich auch nur selten... also kein Plan, aber war das erste was mir in den Sinn kam. |
|
| Nach oben |
|
 |
e-fee


: 08.05.2007 : 3297
|
| : 25.08.2010, 19:04 : SELECT Statement spinnt? MS Access |
|
|
| Gibt da so ein Stichwort, das nennt sich Performance ... |
|
| Nach oben |
|
 |
Beloe007


: 05.03.2009 : 1732
|
|
| Nach oben |
|
 |
net(t)worker Gast
|
| : 25.08.2010, 20:05 : SELECT Statement spinnt? MS Access |
|
|
| bei einer großen DB die in oracle erstellt wurde is performance nicht das entscheidene kriterium, aber bei webdingen kommt es eben auf performance an... darum benutzt man fürs web auch mysql und nicht Oracle... eben weil mysql optimal und performent ist für webseiten... |
|
| Nach oben |
|
 |