baeckerman83: MYSQL Subselect mit Werten aus select?

Beitrag lesen

Hiho!
Ok ich versuche es noch ein mal deutlicher. Also ich habe

  
select id_heim as id,  
GROUP_CONCAT(if(id_heim=2435 and tor_h>tor_g,'S',if(id_heim=2435 and tor_h=tor_g,'U',if(id_heim=2435 and tor_h<tor_g,'N',''))) SEPARATOR '') as heim_form  
from spiel  
where id_heim=2435  
and tor_h is not null  
and saison=2012  
and id_liga=36  
and datum<(SELECT datum FROM spiel where saison=2012 and id_liga=36 and spieltag=32 order by datum limit 1)  
group by id_heim order by datum  

Da kommt dann raus:
2435, 'USSUNSSNNSSSSS'

Das ist auch richtig und passt. Jetzt möchte ich aber nicht jede ID einzeln Abfragen, sondern ich hätte gerne eine Tabelle wo die ganzen Werte stehen. Das habe ich so versucht.

  
select id_heim as id,  
GROUP_CONCAT(if(id_heim=id_heim and tor_h>tor_g,'S',if(id_heim=id_heim and tor_h=tor_g,'U',if(id_heim=id_heim and tor_h<tor_g,'N',''))) SEPARATOR '') as heim_form  
from spiel  
where id_heim=id_heim  
and tor_h is not null  
and saison=2012  
and id_liga=36  
and datum<(SELECT datum FROM spiel where saison=2012 and id_liga=36 and spieltag=32 order by datum limit 1)  
group by id_heim order by datum  

Dann kommt aber
177, 'NUSNSSSUSNSNN'
2435, 'SSUSSNSUNSSNSS'
189, 'SSNSNSSUNUNU'
665, 'SUSUSSUNSUSNS'
183, 'USSSSSSSUNSN'
180, 'USUUSNNNSSUSUU'
179, 'SNNNUUNSNNUSN'
666, 'USNSUSNUNNSS'
176, 'NSSNUNUNNNSN'
181, 'SSSSSUSSSUU'
174, 'USSSSNSNSNSS'
188, 'SNSSSNSNUNN'
175, 'SSNUSNSNSNN'
185, 'SNUSSSSSSSU'
186, 'SNSSSUSSUUSS'
667, 'UNSSNUNSSSSS'
178, 'NNSSSUSSNU'
182, 'UUSSSUSSSSS'
187, 'SSSNSSNSSUSNNU'

Wie man hier an der Zeile
2435, 'SSUSSNSUNSSNSS' sieht passt die nicht und ist falsch. :(
2435, 'USSUNSSNNSSSSS' das sollte dort normal stehen.
Die Anzahl stimmt, aber das sortieren nach der Zeit scheint nicht mehr zupassen.

Hi,

Ich versuche per Select abfrage einige Daten zusammen zufassen. Aber leider kann ich den Wert aus der ersten select abfrage im subselect nicht in der if Klausel benutzen. Ich möchte mir aus der spiele tabelle alle Mannschaften laden und dazu dir Form anzeigen lassen. Weiß jemand wie das gehen könnte?

Ich verstehe deine Frage nicht.

select s.id_heim as id_test, heim_form.id, heim_form from spiel s join(

(select id_gast as id, GROUP_CONCAT(if(id_gast=id_test and tor_h>tor_g,'s',if(id_gast=id_test and tor_h=tor_g,'u',if(id_gast=id_test and tor_h<tor_g,'n',''))) SEPARATOR '') as gast_form from spiel
where id_gast=id_test and tor_h is not null and saison=2012 and id_liga=36 and datum<(SELECT datum FROM spiel where saison=2012 and id_liga=36 and spieltag=32 order by datum limit 1) order by datum) as gast_form)
on (form.id=heim_form.id and heim_form.id=gast_form.id)
where s.id_liga=36 and saison=2012 group by id_heim


>   
> Auch SQL kann man einrücken. Die Mühe geb ich mir hier aber nicht.  
>   
> Anders ausgedrückt: versuche bitte deine Frage nochmal klarer zu stellen. Wie sehen deine Tabellen aus (Struktur, Beispieldaten)? Was ist das Ergebnis, was du dir erwünscht? Was sind deine Versuche, wo hast du Verständigungsprobleme? Dann wird dir auch geholfen.  
>   
> Bis die Tage,  
> Matti