Seite 1 von 2

Kombiniertes Select Statement mit HAVING oder JOIN

Verfasst: 04.08.2004 22:40
von salsa_nacht
hallo,


habe eine Frage die zwar zu einem anderen Board gehoert aber dennoch hier bestimmt einer beantworten kann. Die Frage ist zu einem XForum das folgende Tabellen hat:

nuke_XForum_banned
nuke_XForum_forums
nuke_XForum_members
nuke_XForum_posts
nuke_XForum_ranks
nuke_XForum_smilies
nuke_XForum_themes
nuke_XForum_threads
nuke_XForum_whosonline
nuke_XForum_words

ich will hier ein paar Abfragen machen zu den Postings:

bei dem XForum können User anonymous und non anonymous posten.
Viele haben einen Thread Anon gepostet viele haben Anon darauf geantwortet.

nun will ich alle Users herausfinden, welche entweder einen Initial-Thread ein (Folge-) Posting mit einem Username (also registriert) gepostet haben.

Dafür will ich ein kombiniertes Select-statement anwenden, welches mir aus den beiden XForum-Tabellen folgendes herausgeben soll:


SELECT * FROM nuke_XForum_threads WHERE author <> 'Anonym'

Dieses Statement sollte kombiniert werden mit dem folgenden Statement

SELECT * FROM nuke_XForum_posts WHERE author <> 'Anonym'


Wie geht das? Kann ich das mit dem Join-Operator machen?
Geht das mit der HAVING-Klausel.

vielen Dank fuer die Tipps.

salsa

Verschoben

Verfasst: 04.08.2004 22:55
von PhilippK
Verschoben von Administration und Benutzung nach Coding & Technik

Verfasst: 04.08.2004 22:56
von PhilippK
Versuch's mal mit UNION: http://dev.mysql.com/doc/mysql/en/UNION.html#IDX1587

Gruß, Philipp

Verfasst: 04.08.2004 23:39
von Blutgerinsel
Die JOIN dienen dazu anhand mehrere Tabellen eine Relationelle DB zu ermöglichen, das setzt u.A. voraus das in den Tabellen mindestend ein Schlüssel einen Datensatz eindeutig indentifiziert und in der zu verknüpfenden natürlich auch....

Aber wie bereits gesagt UNION könnte dein Freund werden :wink:

Verfasst: 05.08.2004 00:32
von salsa_nacht
hallo - vielen Dank fuer die Tipps.

das hoert sich sehr interessant an.
Blutgerinsel hat geschrieben:Die JOIN dienen dazu anhand mehrere Tabellen eine Relationelle DB zu ermöglichen, das setzt u.A. voraus das in den Tabellen mindestend ein Schlüssel einen Datensatz eindeutig indentifiziert und in der zu verknüpfenden natürlich auch....

Aber wie bereits gesagt UNION könnte dein Freund werden :wink:

ich habe das mal versucht mit dem Ausdruck:

SELECT * FROM nuke_XForum_threads WHERE author <> 'Anonym'
UNION
SELECT * FROM nuke_XForum_posts WHERE author <> 'Anonym'



das wirft mir aber ein 1064 er Fehler aus. Irgendwas mache ich da noch falsch. WAS kann da noch falsch sein?

Bitte um Tipps und einen Ratschlag wie ich vorgehen soll.




salsa

Verfasst: 05.08.2004 00:51
von Blutgerinsel
Welche MySQL Version hast du?

Verfasst: 05.08.2004 01:01
von Amlor
geht nicht

SELECT * FROM nuke_XForum_threads, nuke_XForum_posts WHERE nuke_XForum_threads.author <> 'Anonym' OR nuke_XForum_posts.author <> 'Anonym'

???

Verfasst: 05.08.2004 11:41
von salsa_nacht
hallo Blutgerinsel,
Blutgerinsel hat geschrieben:Welche MySQL Version hast du?


MySQL 3.23.58

freu mich auf tipps.

salsa

Verfasst: 05.08.2004 14:20
von larsneo
UNION (und damit auch eine menge sql-injections) gibt es erst ab mysql4

Verfasst: 05.08.2004 18:31
von Blutgerinsel
larsneo hat geschrieben:UNION (und damit auch eine menge sql-injections) gibt es erst ab mysql4
Genau auf das wollte ich raus.....

Wenn du keine UNION Abfragen durchführen kannst bleiben dir nur noch als Alternative der Weg z.B. über eine temporäre Tabelle. Was an und für sich für Anfänger kein Pappenspiel ist.....

Lohnt sich der Aufwand wirklich?