Wie Datenababfrage (mySQL)
Gerold Buchheim
- datenbank
Hallo,
ich möchte alle Felder einer Datenbank mit Ausnahme von zwei bestimmten Spalten abfragen, also etwa so:
"select *(not Spalte3, not Spalte4) from TABLE ..."
Leider geht es so nicht ;-(
Auch eine "Positivabfrage" im Sinne von
"select Spalte1, Spalte2, Spalte5, Spalte6, Spalte7 from TABLE ..."
hilft mir nicht weiter, da die Spalten teilweise dynamisch erstellt wurden, und zum Zeitpunkt der Erstellung des Skriptes nicht bekannt sind.
Für Ideen einer "Negativabfrage" bin ich dankbar.
Viele Grüße
Gerold
Hi,
probier's doch mal mit:
SELECT * FROM tabelle WHERE !spalte1 and !spalte2 and ...
Müsst eigentlich klappen.
Gruss
Lemmy
http://www.olison.com
Hallo.
SELECT * FROM tabelle WHERE !spalte1 and !spalte2 and ...
Würde das nicht bedeuten, dass spalte1 und -2 einfach keinen Wert haben darf? Die Aufgabenstellung setzt das aber nicht voraus, nun, dass die beiden Spalten nicht im Result vorkommen.
Grüße aus Würzburg
Julian
Hi,
probier's doch mal mit:
SELECT * FROM tabelle WHERE !spalte1 and !spalte2 and ...
Müsst eigentlich klappen.
Nee, leider nicht. Die Inhalte der betreffenden Spalten werden dennoch ermittelt ;-(
Trotzdem Danke.
Viele Grüße
Gerold Buchheim
Hallo,
ich möchte alle Felder einer Datenbank mit Ausnahme von zwei bestimmten Spalten abfragen, also etwa so:
"select *(not Spalte3, not Spalte4) from TABLE ..."
glaub zwar nicht, dass es das ist was Du willst, aber Du könntest zwar die ganze Tabelle abfragen, aber dann bei der Ausgabe die beiden Spalten weglassen. Also z.B. so:
for(...){
if(spalte!=Spalte3 AND spalte!=Spalte4)
Ausgabe der übrigen Spalten
}
Gruss Alexa
Hallo,
ich möchte alle Felder einer Datenbank mit Ausnahme von zwei bestimmten Spalten abfragen, also etwa so:
"select *(not Spalte3, not Spalte4) from TABLE ..."
glaub zwar nicht, dass es das ist was Du willst, aber Du könntest zwar die ganze Tabelle abfragen, aber dann bei der Ausgabe die beiden Spalten weglassen. Also z.B. so:
for(...){
if(spalte!=Spalte3 AND spalte!=Spalte4)
Ausgabe der übrigen Spalten
}
Ja, in dieser Systematik habe ich das Problem gelöst. Nicht sonderlich elegant, (was mich ein wenig stört) aber egal.
Viele Grüße
Gerold Buchheim
Gruss Alexa
Hi
ich möchte alle Felder einer Datenbank mit Ausnahme von zwei bestimmten Spalten abfragen, also etwa so:
"select *(not Spalte3, not Spalte4) from TABLE ..."
warum?
bydey
Hi
ich möchte alle Felder einer Datenbank mit Ausnahme von zwei bestimmten Spalten abfragen, also etwa so:
"select *(not Spalte3, not Spalte4) from TABLE ..."
warum?
In den einzelnen Spalten der Tabelle werden Produkteigenschaften beschrieben. (Breite, Höhe, Gewicht, Farbe, Artikel-Nr. usw.) Zugansberechtige Administratoren haben nun Mittels enes einfachen selbstgestrickten Interfaces die Möglichkeit, zusätzliche Spalten mit weiteren Eigenschaften anzulegen. Natürlich können diese Spalten auch wieder gelöscht werden.
Dem "normalen" Betrachter am Bildschirm sollen (fast) alle diese Kategorien angezeigt werden. "Fast" deshalb, weil zwei Kategorien (Spalten) einem bestimmten Nutzerkreis vorbehalten ist(Member-Area).
Biele Grüße
bydey
Hi Gerold,
Auch eine "Positivabfrage" im Sinne von
"select Spalte1, Spalte2, Spalte5, Spalte6, Spalte7
from TABLE ..."
hilft mir nicht weiter, da die Spalten teilweise
dynamisch erstellt wurden, und zum Zeitpunkt der
Erstellung des Skriptes nicht bekannt sind.
aber zum Zeitpunkt der Ausführung des Skriptes sind
sie bekannt - und via DESCRIBE abfragbar. Also:
1. Sende ein DESCRIBE für die Tabelle an mySQL.
2. Analysiere die Antwort und generiere die SELECT-
Liste daraus.
3. Sende das eigentliche SELECT an mySQL.
Für Deine Aufgabenstellung, alle bis auf zwei Spalten
auszugeben, ist das allerdings oversized - da ist
SELECT * und Ausblenden in Deiner CGI-Sprache völlig
ausreichend.
Das Problem an sich hat aber seinen Reiz - nämlich
dann, wenn die auszublendenden Spalten _sehr_ viel
größer sind als die übrigen. Dann wird es nämlich
eine Performance-Frage, _nicht_ alle Daten zu holen.
Viele Grüße
Michael