URL: https://www.overclockers.at/coding-stuff/mysql_query_problem_93258/page_1 - zur Vollversion wechseln!
Hey
Ich hab folgende zwei Tabellen:
1: id, name, dateiname
2: id, name_id, lang_id, titel, text
Jetzt wählt der Benutzer eine Sprache aus, welche in eine Session geschrieben wird($lang_id)
Jetzt möchte ich aus der Tabelle 1 alle namen auslesen für die in der Tabelle 2 noch kein Titel/Text eingefügt wurde (heißt, dass kein entsprechender Datensatz existiert).
Kleines Beispiel sollte nicht ganz klar sein was ich brauche:
Tabelle 1:
1, hansi, hansi.jpg
2, peppi, peppibild.jpg
3, franz, bild.jpg
Tabelle 2:
1, 1, de, Doktor, blabalabala
2, 2, en, Doctor, englischer blabla
Ich möchte jetzt haben, dass ich die Sprache "Deutsch" auswähle und als Ergebnis des Querys soll rauskommen:
2, peppi
3, franz
Oder ich suchen nach "Englisch", dann sollt das Ergebnis so aussehen:
1, hansi
3, franz
Geht das überhaupt?
Wenn ja, wie?
*tia*
Christoph
das geht entweder mit einem subselect (arg.. mysql!) oder mit einem outer join:
zb so:
SELECT tabelle1.id,tabelle1.name FROM tabelle1
LEFT OUTER JOIN tabelle2 ON tabelle1.id=tabelle2.id
WHERE tabelle2.id IS NULL;
ich hoffe natürlich, du benennst die tabellen nach den entitäten
hmmm ... ganz versteh ichs nicht ... die eine tabelle heißt
"namen" und die zweite heißt "texte"
warum sollt ich die beiden tabellen über die ids verknüpfen? Die haben ja miteinander nichts zu tun ...
Wenn dann müsst ich sie doch per namen.id = texte.name_id verknüpfen, oder?
Das funkt aber auch nicht 
Und irgendwie muss noch die lang_id irgendwie in den Query rein ...
Code: PHP$querystring = "SELECT namen.id, namen.name FROM namen,texte WHERE namen.id=texte.namensid AND texte.titel IS NULL AND texte.text IS NULL AND texte.lang={$_SESSION[lang_id]}"
Hey.
Thx erstmal ...
das funktioniert allerdings nur, wenn ich schon in der Tabelle "texte" einen Datensatz hab mit ausgefüllten id, namen_id, und lang_id Feldern...
das Problem ist, dass es diesen Datensatz ja noch garnicht gibt.
oh, ich schätze mal ich hab das flasch verstandenZitat von MaehmannHey.
Thx erstmal ...
das funktioniert allerdings nur, wenn ich schon in der Tabelle "texte" einen Datensatz hab mit ausgefüllten id, namen_id, und lang_id Feldern...
das Problem ist, dass es diesen Datensatz ja noch garnicht gibt.

)Code:SELECT namen.id,namen.name FROM namen LEFT OUTER JOIN texte ON namen.id=texte.namenid WHERE texte.namensid IS NULL;

hättest auch schon weiter oben schreiben können.Zitat von Maehmannhmmm ... ganz versteh ichs nicht ... die eine tabelle heißt
"namen" und die zweite heißt "texte"
okay danke ... werd mir das heut am Abend anschauen ... jetzt heißts Mathe lernen gehen ... god damn it 
hmm, ich bin irgendwie scho a kipferl... jetz hab ich schowieder die lang vergessenZitat von Maehmannokay danke ... werd mir das heut am Abend anschauen ... jetzt heißts Mathe lernen gehen ... god damn it
das is tatsächlich nicht grad einfach, sollte aber so funken... *schweissvonderstirnwisch*Code:SELECT namen.id,namen.name FROM namen LEFT OUTER JOIN texte ON namen.id=texte.namenid AND texte.lang='{$_SESSION[lang_id]}' WHERE texte.namensid IS NULL AND texte.lang IS NULL

Zitat von watchoutCode:SELECT namen.id,namen.name FROM namen LEFT OUTER JOIN texte ON namen.id=texte.namenid AND texte.lang='{$_SESSION[lang_id]}' WHERE texte.namensid IS NULL AND texte.lang IS NULL


geil, das funkt?
ich habs eigentlich net geglaubt, hab mir joins eben das erste mal geben

die funktionsweise ist leicht erklärt: beim outer join wird für jeden nicht vorhandenen datensatz im join ein datensatz mit lauter null-werten erzeugt - so daß der join trotzdem klappt.
fragt man nun nach genau diesem null-wert ab, erhält man quasi alle nicht-vorhandenen joins.
also, laut doku geht das gleiche auch mit nem innerjoin...Zitat von atroxdie funktionsweise ist leicht erklärt: beim outer join wird für jeden nicht vorhandenen datensatz im join ein datensatz mit lauter null-werten erzeugt - so daß der join trotzdem klappt.
fragt man nun nach genau diesem null-wert ab, erhält man quasi alle nicht-vorhandenen joins.
Zitat von watchoutgeil, das funkt?ich habs eigentlich net geglaubt, hab mir joins eben das erste mal geben
![]()


bei mir gibts sowas nichtZitat von Maehmannbevor ich hier gepostet hab, hab ich mir das mit den joins auch angesehen ... aber nie einen funkenden query zamgebracht![]()
g0t glückstreffer?
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2026