Passende WHERE-Klausel für MySQL-Abfrage?
Volker Nebelung
- datenbank
Hallo,
ich habe eine Datenbanktabelle mit folgenden Spalten:
id, merkmal1, merkmal2
Nun will ich in PHP eine Abfrage für merkmal1 starten:
mysql_query ("SELECT merkmal1 FROM tabelle")
Zusatzbedingung: der jeweilige Datensatz soll aber nur dann ausgewählt werden, falls merkmal1 von all seinen Vorgängern verschieden ist.
Klar, in PHP einfach: Ich packe die Ergebnisse obiger Abfrage in ein Array und lasse array_unique() drüberlaufen.
Gibt es eine Möglichkeit mittels WHERE - Klausel diese Abfrage direkt in MySQL zu regeln?
Durchforsten der Dokumentation half mir nicht weiter.
Danke im Voraus für Hilfe.
Gruß, Volker
Ahoi Volker Nebelung,
ich verstehe nicht ganz dein problem, aber vll hilft dir ein blick in
http://dev.mysql.com/doc/refman/4.1/en/select.html
weiter, besonderes augenmerk sollte dabei GROUP BY haben
http://dev.mysql.com/doc/refman/4.1/en/group-by-modifiers.html
MfG
Hallo,
hi
Gibt es eine Möglichkeit mittels WHERE - Klausel diese Abfrage direkt in MySQL zu regeln?
SELECT merkmal1 FROM tabelle GROUP BY merkmal1
SELECT merkmal1 FROM tabelle GROUP BY merkmal1
Sorgt GRUP BY nicht lediglich für eine Gruppierung der Ergebnisse und nicht für die Sicherstellung, dass merkmal1 auch nur einmal ausgwählt wurde?
Gruß, Volker
hi,
SELECT merkmal1 FROM tabelle GROUP BY merkmal1
Sorgt GRUP BY nicht lediglich für eine Gruppierung der Ergebnisse und nicht für die Sicherstellung, dass merkmal1 auch nur einmal ausgwählt wurde?
GROUP BY liefert dir für jeden eindeutigen Wert in der dahinter angegebenen Spalte bzw. Spaltenkombination genau einen Ergebnisdatensatz.
gruß,
wahsaga
GROUP BY liefert dir für jeden eindeutigen Wert in der dahinter angegebenen Spalte bzw. Spaltenkombination genau einen Ergebnisdatensatz.
Dann hab ich GROUP BY falsch verstanden.
Danke.
Gruß, Volker
hi,
Zusatzbedingung: der jeweilige Datensatz soll aber nur dann ausgewählt werden, falls merkmal1 von all seinen Vorgängern verschieden ist.
Definiere: "Vorgänger"
gruß,
wahsaga
Definiere: "Vorgänger"
Vielleicht etwas holprig ausgedrückt, das stimmt. Anders: Ist merkmal1 in Datensatz x1 durch SELECT ausgewählt worden, dürfen Datensätze mit identischem merkmal1 nicht mehr ausgewählt werden.
Ich will also nur eine Übersicht, _welche_ merkmal1 es in der Tabelle gibt, aber nicht alle Datensätze selektieren und dann doppelte Einträge schließlich per PHP rauswerfen.
Gruß, Volker
Ahoi Volker Nebelung,
Ich will also nur eine Übersicht, _welche_ merkmal1 es in der Tabelle gibt, aber nicht alle Datensätze selektieren und dann doppelte Einträge schließlich per PHP rauswerfen.
Schonmal daran gedacht eine Merkmal-Tabelle in der DB anzulegen? dort hättest du definitiv jedes Merkmal nur einmal und könntest diese über die ID den Einträgen zuordnen.
MfG
Schonmal daran gedacht eine Merkmal-Tabelle in der DB anzulegen? dort hättest du definitiv jedes Merkmal nur einmal und könntest diese über die ID den Einträgen zuordnen.
Hm, noch eine solche Tabelle wäre unpraktikabel.
Hintergrund: merkmal1 bezeichnet einen Ordner, merkmal2 einen Dateinamen.
Mit Auswählen von merkmal1 will ich also eine Übersicht gewinnen, welche Ordner genutzt werden.
Im Prinzip _ist_ das also schon die merkmaltabelle.
Gruß, Volker
Hallo Volker,
Ich will also nur eine Übersicht, _welche_ merkmal1 es in der Tabelle gibt, aber nicht alle Datensätze selektieren und dann doppelte Einträge schließlich per PHP rauswerfen.
es gibt die Option DISTINCT:
SELECT DISTINCT
merkmal1
FROM tabelle
Die bereits erwähnte Verwendung der GROUP-BY-Klausel führt zum gleichen Resultat.
Freundliche Grüße
Vinzenz