Seite 1 von 1

DISTINCT

Verfasst: 08.07.2003 22:11
von Spider
Hi phpBBler,

ich hab ein Problem mit dem MySQL Befehl "DISTINCT", der doppelte Einträge überspringt. Nun möchte ich aber nicht nur eine Zellen auslesen, sondern noch weitere Zellen.

Meine Idee, die nunmal nicht funktioniert, war:
$query = "SELECT distinct(column1) , column2 FROM testtable";

Jedoch ist es dann wie jede andere SQL Abfrage.

------------
Für Tester...

<?php
$link = mysql_connect("localhost","root","");
mysql_select_db("testing", $link);
$query = "SELECT distinct(column1) , column2 FROM testtable";
$result = mysql_query($query, $link);
while($row = mysql_fetch_object($result)) {
echo $row->column1 ." - ". $row->column2 ."<br>";
}
?>

CREATE TABLE testtable (
id int(6) NOT NULL auto_increment,
column1 varchar(10) NOT NULL default '',
column2 varchar(10) NOT NULL default '',
PRIMARY KEY (id)
) TYPE=MyISAM;
INSERT INTO testtable VALUES (1, 'w1c1', 'w1c2');
INSERT INTO testtable VALUES (2, 'w1c1', 'blabla');
INSERT INTO testtable VALUES (3, 'blabla', 'jojojetzt');

Verfasst: 09.07.2003 05:31
von D@ve
Also so ganz richtig doll verstanden habe ich das Problem nicht...

Du willst zwei Spalten auslesen und jeweils die doppelten Einträge rausschmeissen?
DISTINCT ist immer auf ein komplettes Tupel bezogen. Nur eine Spalte abzusondern würde auch keinen Sinn machen wenn Du zB die Tabelle:

Code: Alles auswählen

column1 | colum2 
-----------------
bla     | 01
-----------------
blub    | 32
-----------------
bla     | 24
-----------------
blabla  | 22
-----------------
blabla  | 22
Wenn ich Dich richtig verstanden habe willst Du alle Spalten wo zB "bla" drinsteht über Distinct rausschmeißen. Die Frage ist halt welchen Wert er dann fpür Spalte 2 drin lassen soll 01 oder 24... von daher wäre da kein Sinn drin sondern nur wenn man eindeutig doppelte Tupel wie blabla/22 hat.

Ansonsten probier mal einfach am Schluuß GROUP BY column1 das Ordnet das Ergebnis nach der Spalte, vielleicht hilft Dir das weiter...

Gruß, Dave[/code]

Verfasst: 09.07.2003 12:19
von Gast
Du hast schon verstanden worum es geht, aber natürlich ist es sinnvoll! Er nimmt halt den ersten Wert, den mysql selektiert!

Aber anscheinend gibts dafür keine Lösung, weil alle vom Thema abweichen wollen. Danke trotzdem...

Verfasst: 09.07.2003 14:00
von Pyramide
Gast hat geschrieben:Aber anscheinend gibts dafür keine Lösung
Es gibt eine Lösung, und zwar wie Dave schon gesagt hat GROUP BY. http://www.mysql.com/doc/de/SELECT.html http://www.mysql.com/doc/en/GROUP-BY-Functions.html .
Gast hat geschrieben:weil alle vom Thema abweichen wollen.
Wer ist "alle"? Es hatte doch erst einer geantwortet. Und wieso vom Thema abweichen?

Verfasst: 09.07.2003 14:27
von Gast
Ja ihr seit nicht die einzigen, die ich bisher gefragt habe. Nagut ist auch egel, danke es geht ja mit GROUP BY, aber damit wärs nicht distinct :) Worauf ich ja hinauswollte, ob es mit distinct zu lösen ist oder nicht.