Nur Daten auswählen, die nur einmal vorkommen?
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfrage
anfrage
anzahl
array
code
datenmenge
datum
ergebnis
folgende tabelle
klausel
komplette abfrage
liegen
million
obergrenze
performance
realisieren
steigern
tabelle
url
vorkommen
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
suchst du speziell nach werten die ein mal vorkommen oder brauchst du das für die Ausgabe?
Weil für die Ausgabe kannst du auch "distinct" verwenden
http://www.w3schools.com/sql/sql_distinct.asp
ansonsten könntest du die werte selecten und hinten dran ein count laufen lassen. Aus dieser Menge selectest du dann nochmal die Werte wo der Counter nur eins beträgt
Beitrag zuletzt geändert: 6.8.2014 21:24:32 von ka3ax85 -
Hi,
das kannst du mittels COUNT und HAVING realisieren, allerdings sollte die Datenmenge dann nicht zu groß werden, da das irgendwann zu Performanceproblemen führen kann. Je nachdem wie kompliziert die Abfrage ist und wie häufig neue Daten in die Tabellen geschrieben werden kann die Obergrenze schon bei 100 liegen, aber eventuell auch erst bei 50 Millionen, dazu müsste ich wissen, wie deine komplette Abfrage aussieht.
Hier ein Beispiel, wir haben folgende Tabelle foo:+----+-------+ | id | value | +----+-------+ | 1 | 1 | | 2 | 1 | | 3 | 2 | | 4 | 2 | | 5 | 3 | +----+-------+
Jetzt wollen wir jede id finden, die zu einem eindeutigen value gehört. Das können wir machen, indem wir die Abfrage nach value gruppieren und zählen, wie viele gleiche Werte wir finden. Anschließend filtern wir mit HAVING noch heraus, weche Einträge eindeutig sind.
SELECT `id`, COUNT(`value`) AS 'valuecount' FROM `foo` GROUP BY `value` HAVING `valuecount` = 1
Alles was eindeutig sein soll wird hierbei in die GROUP BY Klausel aufgenommen, außerdem ist es sinnvoll eine genaue WHERE Klausel aufzunehmen, um die Performance zu steigern, ansonsten kann das wie gesagt sehr langsam werden!
Wenn du mir deine Tabellenstruktur und deine Ziele sagst kann ich dir dann aber weiterhelfen, falls du Probleme damit hast.
Mit freundlichen Grüßen
Beitrag zuletzt geändert: 6.8.2014 21:35:15 von nemoinho -
Ich glaube so müsste es gehen. Weiß nicht ob's die beste Möglichkeit ist
$anfrage = 'SELECT `name` FROM `tabelle`'; $ergebnis = $SQL->prepare( $anfrage ); $ergebnis->execute(); $result = $ergebnis -> get_result(); while ($row = $result -> fetch_assoc()) { $meins[$row['name']] = $meins[$row['name']]+1; } foreach( $meins as $name => $anzahl ) { $array[$anzahl][$name] = ""; } print_r( $array[1] );
EDIT: Sorry hatte mich verlesen mein Fehler!
Beitrag zuletzt geändert: 6.8.2014 22:58:37 von leicht-gekocht -
Hallo!
nemoinho schrieb:
Hi,
das kannst du mittels COUNT und HAVING realisieren, allerdings sollte die Datenmenge dann nicht zu groß werden, da das irgendwann zu Performanceproblemen führen kann. Je nachdem wie kompliziert die Abfrage ist und wie häufig neue Daten in die Tabellen geschrieben werden kann die Obergrenze schon bei 100 liegen, aber eventuell auch erst bei 50 Millionen, dazu müsste ich wiessen, wie deine komplette Abfrage aussieht.
Hier ein Beispiel, wir haben folgende Tabelle foo:+----+-------+ | id | value | +----+-------+ | 1 | 1 | | 2 | 1 | | 3 | 2 | | 4 | 2 | | 5 | 3 | +----+-------+
Jetzt wollen wir jede id finden, die zu einem eindeutigen value gehört. Das können wir machen, indem wir die Abfrage nach value gruppieren und zählen, wie viele gleiche Werte wir finden. Anschließend filtern wir mit HAVING noch heraus, weche Einträge eindeutig sind.
SELECT `id`, COUNT(`value`) AS 'valuecount' FROM `foo` GROUP BY `value` HAVING `valuecount` = 1
Alles was eindeutig sein soll wird hierbei in die GROUP BY Klausel aufgenommen, außerdem ist es sinnvoll Werte eine genaue WHERE Klausel aufzunehmen, um die Performance zu steigern, ansonsten kann das wie gesagt sehr langsam werden!
Wenn du mir deine Tabellenstruktur und deine Ziele sagst kann ich dir dann aber weiterhelfen, falls du Probleme damit hast.
Mit freundlichen Grüßen
Danke, das ist genau das, was ich gesucht habe!
MfG. Simon D. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage