Hallo,<br>ich benötige das Select Statment für folgende Abfrage:<br>Es gibt drei Felder in einem Datensatz :Timestamp, Ort, Nr<br>Ich benötige nun alle Datensätze, in denen die Nr gleich ist und der Ort unterschiedlich ist.<br>Als Ergebnis möchte ich demnach die verschiedenen Orte zu einer gleichen Nr erhalten.<br>Ich bekomme es einfach nicht hin *haarausfallbekomm*<br><br>Danke, Michael
Announcement
Collapse
No announcement yet.
Hilfe bei SQL Abfrage
Collapse
X
-
Hallo,<br>das wäre zu einfach Frank :-)<br>
Die Nr muss an verschiedenen Orten vorhanden sein.<br><PRE>
2004-01-01 01:00:00 ; ORT-1 ; 100
2004-01-01 02:00:00 ; ORT-1 ; 100
2004-01-02 01:00:00 ; ORT-2 ; 100
2004-01-03 01:00:00 ; ORT-3 ; 200
2004-01-04 01:00:00 ; ORT-4 ; 300
</PRE>Bei diesen Beispielsätzen muss das Ergebnis ORT-1 und Ort-2 sein, da die Nr "100" an beiden vorhanden ist.<br>Ich hatte es wie folgt probiert:<br> Query.sql.add('select count(*),NR from daten GROUP BY NR having count(NR) > 1 ');
<br>Dadurch bekomme ich aber lediglich mehrfach (>1) vorhandene Nr als Ergebnis. Unberücksichtigt ist aber, dass die Nr an verschiedenen (min 2) Orten sein muss.<br>Michae
Comment
-
Hey Michael,<BR><BR>
dann kann ich die Haare wohl nicht retten. ;-)<BR><BR>
Nun kommt es natürlich noch auf die verwendete DB an. Ohne Subselect sehe ich keinen Weg.<BR>
Bei Firebird würde ich es wie folgt machen:
<PRE>
select distinct nr, ort from tabelle t1
where (select count(distinct ort) from tabelle t2 where t2.nr = t1.nr) > 1
</PRE>
Gruß, Fran
Comment
-
Hi Frank,<br>
NIE MEHR HAARAUSFALL ;-)<br>Ich habe es folgendermassen in MYSQL lösen können:<PRE>
ZMySqlQuery1.sql.add('select distinct t1.ort, t1.NR from daten t1 LEFT JOIN daten t2 ' +
'on (t2.ort <> t1.ort) where (t2.NR = t1.NR) group by t1.NR, t1.ort' );
</PRE><br>funktioniert gut, Danke für den Tip... Michae
Comment
Comment