MySQL limit-problem[gelöst]

  • Themenstarter Themenstarter sw33tlull4by
  • Beginndatum Beginndatum
S

sw33tlull4by

Guest
Hallo!
Folgende Anfrage:

select x.*,y.*,j.* from TABLE1 x,TABLE2 y, TABLE3 j where x.id = y.id2 and y.key = j.key2 ORDER BY
x.id,rand();

gibt zB 50 zeilen aus wobei in dem Resultset 20 verschiedene x.id enthalten sind.
Nun will ich das:

select x.*,y.*,j.* from TABLE1 x,TABLE2y,TABLE3 j where x.id = y.id2 and y.key = j.key2 ORDER by x.id,rand() limit 4;

nicht NUR die ersten 4 Zeilen ausgibt sondern die Zeilen des Resultsets wo die ersten 4 voneinander verschiedenen x.id's drin vorkommen.

so kann mein Wunsch zB ein Resultset haben welches 16 Zeilen hat aber nur auf 4 begrenzt wurde, da jedes der 4 x.id in insgesamt 4 Zeilen vorkommt.

Die Referenz von Mysql sagt bezueglich Limit darueber leider nichts aus, und ich wuerd das nur ungern Programmieren.(Uebersichtlichkeit).
mfg

sw33t
 
GROUP BY x.id
sollte gleiche IDs eleminieren.
 
Nein, leider suche ich das nicht.
Kannte ich zwar noch nicht aber es leistet nicht was was ich brauche.
Denn wenn ich mittels group by x.id unterschlage ich bestimmte kombinationen
und mittels group by y.key auch oder aber wenn alle werte ungleich sind kann ich das gleich weglassen

Was ich brauche ist folgendes:
Ich muss eine Anfrage erstellen.
Die Ausgabe ist(primaer) gruppiert nach der id von x und id2 von y.
sekundaer ist sie gruppiert nach y.key und j.key2.
Zb
binaeres System

00
01
10
11

Bei group bekomme ich 00/10| 01/10|00/11|01/11
ich brauche aber 00/01 |10/11


limit funktioniert hier nur weil ich nur 2 stellen belegt habe und group by versagt hier schon.

Meine Anfrage hat aber weit mehr als 3 Kombinationen die von Kombinationen abhaengig sind.
und ich Interessiere mich halt fuer eine finite Anzahl der allerersten Kombination/bzw identizierung eines Merkmals was die ersten Kombination Identifiziert, allerdings muessen hier alle weiteren kombinationen,bei denen diese erste Kombination nicht veraendert ist mit beruecksichtigt sein.

Die auswahl ist beendet wenn sich die erste Kombination genuegend oft veraendert hat, wobei die Art der veraenderung nicht relevant ist.
mfg

sw33t

//edit

ich hab mich nochmal umgehoert und so wie es scheint ist das eine Sache die in MySQL nicht moeglich ist.
Weswegen ich das nun in Software geschrieben habe.


//Nachtrag:
Ich habe es doch gelöst bekommen.

....... where test.parameter =\"".$conn_id->escape_string($_POST['parameter'])."\" ORDER BY find_in_set(test.gruppenparameter,\"".$list_group."\") DESC"

diese nachtrag loest mein problem.
Es sortiert alle gruppen nach test.parameter und beruecksichtigt deren zugehoerigkeit zu einander unter test,gruppenparameter und gibt deren position in der liste $list_group wieder.

Das Desc sorgt dafuer das die auswahl oben aufliegt, damit man sie gleich auswaehlen kann, da sonst dieanderne nicht in der liste $list_group vorhandenen parameter vor der gruppenliste aufgelistet werden.
 
Zurück
Oben