MySQL DISTINCT mit codeigniter... Sehr seltsames Verhalten
Ok, nur um dieses einfache, die ich brauche, um eine Schleife durch die DISTINCT
Ergebnisse jeder Spalte in dieser Tabelle genannt PRINTS
Nun, hier ist der seltsame Teil ...
$this->db->distinct();
$this->db->select('PRINTS.COLOR');
$q = $this->db->get('PRINTS');
return $q->result();
Ok COLOR
ist ein COL in der Tabelle IST SIZE
und PAPER
--- Ok, machen Sie sich bereit, denn jetzt wird es seltsam...
Wenn ich $this->db->select('PRINTS.SIZE');
ich in der Lage bin, eine Schleife durch die DISTINCT
Werte für SIZE
in der Tabelle.
JEDOCH
Wenn ich $this->db->select('COLOR');
ich bekomme FEHLER: EIN Datenbank-Fehler Aufgetreten /Error Number: 1054 /
Unbekannte Spalte 'COLOR' in 'field list'
Gleiche passiert für PAPER
auch -- Es scheint, dass nur SIZE
funktioniert wie es sollte. Nach CODEIGNITER DOCS, die ich tun Müssen: $this->db->select('COLOR, PAPER, SIZE');
Aber ich bin immer ein unbekannter COL
Fehler. Rechtschreibung ist korrekt. Kann jemand Licht in diese? Was ist Los? TY
COLOR
ist, dass ein reserviertes Wort in MySQL? Hmm, scheint nicht so: dev.mysql.com/doc/mysqld-version-reference/en/...Keine seiner nicht. Das ist wirklich Abstich mein Gehirn jetzt.. Nähert sich eine Stunde von diesem Wahnsinn....
Du, mein Freund muss mein Glücksbringer, weil ich gerade herausgefunden, das problem. Die CSV-Datei, die zum erstellen der DB eingefügt hatte ein Leerzeichen vor dem COL NAMEN, das grobe fällt nicht in PHPmyADMIN. Um es noch verwirrender
SIZE
eingefügt wurde, ohne den Raum (das ist, warum es funktionierte). Farbe war eigentlich eingefügt, als ` FARBE` und print ` DRUCKEN` -- Wow, das war schrecklich :/ Neues problem jetzt.. DISTINCT
ist die Schleife durch das ResultSet und sich wiederholende Werte -- ex sollte es sein SIZE => a,b,c,d
Sondern es ist die Schleife 5 mal a,b,c,d,a,b,c,da,b,c,da,b,c,
Ja erzähl mir über ... Einige der Haare auf meinem Kopf ging gray auf diese non-sense und ich bin zu jung, lol. Ich denke, die Hauptursache ist, dass ich auf leeren (bis 23 Stunden) baute ich ein bot-Angefangen Schaben und wollte die Daten in eine DB zu bauen die form aus 🙂 super happy jetzt.... Sie würden nicht geschehen, zu wissen, wie kann ich das beheben meinem aktuellen dilemma, würde ya? Es scheint, dass
DISTINCT
funktioniert nur richtig, wenn ich nur einen Wert SIZE
oder COLOR
-- Wenn ich den pass bekomme ich wiederholte Zeichenfolgen aus der foreach-Schleife...DISTINCT
nur zeigt Sie deutliche Reihen. Zum Beispiel, wenn Sie hatte small,red
, large,red
, und small,red
Sie bekommen würde large,red
, und small,red
als Ergebnis. red
ist es doppelt, da die DISTINCT
ist, wirken sich auf die gesamte Zeile, nicht nur in einem Feld.InformationsquelleAutor fabbb | 2012-10-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie möchten, verschiedene Zeilen nur jede Art, müssen Sie nur verwenden, insbesondere die Spalten einzeln.
Als @Rakete Hazmat darauf hingewiesen, wenn Sie irgendwelche gemischte Ergebnisse, Sie werden behandelt wie verschiedene Zeilen. Mein Vorschlag wäre a) erstellen Sie zusätzliche Tabellen zu halten, diese Werte (bevorzugt), oder b) zum ändern der Spalten der Tabelle mit den unterschiedlichen Werten zur Verfügung.
Einer Stichprobe FARBEN Tabelle wäre wie:
Dann die Abfrage für diese zu bekommen, ist einfach alle Farben zur Verfügung:
Da Sie erwähnt dies wurde durch Import aus einer CSV-Datei würde ich sagen, Sie könnte die Durchführung der erforderlichen Verarbeitung nach dem Einlesen der CSV zu Holen, die unterschiedliche Werte, wie oben, dann setzen Sie Sie in die FARBEN-Tabelle.
Schließlich, ich denke, der beste Ansatz ist, um einige einfache Normalisierung sobald Sie die Daten, um bessere Abfragen, und auch zur Verbesserung der Leistung Ihrer Anwendung.
InformationsquelleAutor seangates