Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » PHP » [mySQL] LEFT/INNER/RIGHT JOIN ...

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
28.07.2010, 21:54 Uhr
~global
Gast


hallo,

ich will nen datensatz filtern, komme komme aber irgendwie nicht zu dem ergebnis was ich haben will.
also, ich hab ne tabelle von der nur 2 spalten interresieren : (zB)
"nID" "sID"
0 y1
0 y2
0 x1
0 x2
0 x3
10001 y2
10001 x3
10002 y1

jetzt brauch ich ne abfrage wo mir alle "sID" gelistet werden die "nID=0" sind und zusätzlich ein feld angelegt wird was signalisiert ob von einer bestimmten "nID" ebenfalls ein datensatz vorhanden ist. also soll bei der abfrage nach zB nID=10001 folgendes rauskommen :
"nID" "sID" "flag"
0 y1 0
0 y2 1
0 x1 0
0 x2 0
0 x3 1

wie lös ich das ? geht das überhaupt mit nem JOIN ?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
29.07.2010, 15:58 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


Hmm wie wäre es mit zwei Abfragen... Einmal alle wo nID 0 ist und einmal wo nID ungleich null ist...

bei der ungleich 0 gruppieren (und ggf. summieren) nach sid und dann an die erste dranbauen...
--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 29.07.2010 um 15:58 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
29.07.2010, 17:39 Uhr
~global
Gast


mh, versteh ich jetzt nicht so ganz wie du das meinst.
ich hab jetzt erst mal folgende abfrage
SELECT csID, nID FROM table1 WHERE nID in (10001, 0) ORDER BY csID, nID desc;
das ergebnis ist dann
"sID" "nID"
y1 0
y2 10001
y2 0 <-- der soll eben nicht erscheinen
x1 0
x2 0
x3 10001
x3 0 <-- der auch nicht

im prinzip will ich ein distinct csID
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
30.07.2010, 10:57 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


Ich habe aktuell nur Access auf dem Rechner aber auf die schnelle so...

Abfrage 1

C++:
SELECT Tabelle1.nID, Tabelle1.sID
FROM Tabelle1
WHERE (((Tabelle1.nID)=0));



Abfrage 2

C++:
SELECT Tabelle1.sID, Count(Tabelle1.nID) AS Anzahl
FROM Tabelle1
GROUP BY Tabelle1.sID, Tabelle1.nID
HAVING (((Tabelle1.nID)<>0));



Abfrage 3

C++:
SELECT Abfrage1.sID, Abfrage2.Anzahl
FROM Abfrage1 LEFT JOIN Abfrage2 ON Abfrage1.sID = Abfrage2.sID;


Das flag müsstest du dann noch aus Anzahl bilden. Die Frage ist ob das überhaupt nötig ist. Überall wo nix (oder ne Null) steht gibts den Datensatz halt nicht. Kann man auch direkt damit weiterarbeiten...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
30.07.2010, 16:01 Uhr
~global
Gast


besten dank! hast mich in die richtige richtung gebracht, das flag ist in der tat überflüssig.
an GROUP BY hab ich überhaupt nicht gedacht! hab es jetzt :

Code:
SELECT csID, COUNT(nID) AS flag FROM table1 WHERE nID IN (10002, 0) GROUP BY csID ORDER BY csID;

ist jetzt genau so wie ich das wollte. danke!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ PHP ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: