DISTINCT

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
Spider
Mitglied
Beiträge: 108
Registriert: 08.02.2003 16:28
Wohnort: Osnabrück
Kontaktdaten:

DISTINCT

Beitrag 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');
Benutzeravatar
D@ve
Ehemaliges Teammitglied
Beiträge: 3842
Registriert: 28.08.2002 19:33
Wohnort: Bretzfeld
Kontaktdaten:

Beitrag 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]
There are only 10 types of people in the world: Those who understand binary, and those who don't
Gast

Beitrag 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...
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag 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?
Gast

Beitrag 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.
Antworten

Zurück zu „Coding & Technik“