WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Software (http://www.wcm.at/forum/forumdisplay.php?f=5)
-   -   mysql: wie nicht in ergebnis enthaltene id´s ermitteln? (http://www.wcm.at/forum/showthread.php?t=230282)

le bart 28.08.2008 19:26

mysql: wie nicht in ergebnis enthaltene id´s ermitteln?
 
hallo!
ich steh grad auf dem schlauch...vielleicht könnt ihr mir helfen

ich hab eine liste in der datensätze mehrfach vorkommen, meist gleich, aber auch mit einem einzigen datum verschieden.

jetzt brauch ich einerseits eine liste aller doppelten, die sich nur in dem einen datum unterscheiden und andererseits eine liste derer, die eben nicht doppelt vorkommen oder völlig doppelt oder vielfach (wobei ganz allgemein doppelt oder dreifach oder vierfach egal is, ich brauch sie nur einmal genau doppelt mit dem einen unterschied, alles andere in die 2te liste)

die erste liste hab ich, ich komm nur nicht dahinter, wie ich die zweite erzeugen soll:

SELECT A.datum1,A.datum2,A.datum3,
B.datum1,B.datum2,B.datum3 WHERE A.datum1=B.datum1 AND B.datum2<> B.datum2 AND A.datum3= B.datum3 GROUP BY A.datum1


einfach die gegenteilige abfrage ergibt nur müll, da in der liste wirklich viele dupes mit allen möglichen kombinationen drin sind




ich hab mir gedacht ich exportier die zwei ausgabespalten und reimportier sie in eine eigene tablle mit nur einer spalte und joine das gegen die ori-tabelle, oder gehts einfacher?
thx!

FireFoX80 28.08.2008 22:51

ehrlich gesagt, hab ich nicht ganz verstanden was du erreichen willst...

vielleicht hilft dir eine gruppierung nach datum weiter. alle gruppen die einen count>1 haben, sind dann doppelt vorhanden.

LG

iG0r 28.08.2008 23:03

Ich glaube er braucht zwei Ergebnise, die Datensätze mit einem Datum die doppelt vorkommen, und jene die nur einmal vorhanden sind. Ist aber nur geraten ;)

Vielleicht hilft das hier: http://dev.mysql.com/doc/refman/5.1/...functions.html

le bart 29.08.2008 07:38

vielleicht krieg ichs jetzt deutlicher hin ;);

es sind 4000 datensätze, davon 1500 mit datum1 (group by datum1).
mit obiger abfrage hab ich 3000 datensätze ermittelt, nämlich alle 1500 grupierte und daneben 1500 die bis auf datum2 ident mit denen sind. datum2 hat immer nur 2 mögliche werte. das ist erledigt. die liste ist
datum1.datum2.datum3.datum1.datum2anders.datum3

dann brauch ich alle datensätze aus der liste die nun übrig sind. das sind datensätze die sind völlig ident mit den obigen (wenige), aber wegen gruppierung rausgefallen (beabsichtigt).
dann gibt es welche bei denen nur datum1 gleich is, der rest aber nicht, also quasi singles (viele). usw.. der einfachste weg wär also einfach die restmenge von obiger abfrage in eine eigene liste abzubilden, denk ich..

ideal wär also gewesen select * from tabelle where id <> (<obige abfrage>)
was aber netz funzt, da die unterabfrage ja mehr als 1 ergebnis hat..oder ich schreib ergebnis 1 in einen php-array und frag einzeln die übrigen ab..oder das geht mit einer mysql abfrage?

iG0r 29.08.2008 09:28

Schau dir einfach mal den Link an, den ich gepostet hatte. Es gibt ja nicht nur "where" sondern noch when, then else, if, ... Da kann man sich schon was bauen ;)


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:30 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag