Seite 1 von 1

alle werte aus mehreren Tabellen auslesen

Verfasst: 15.03.2008 15:37
von phillip
Hallo
Ich habe folgendes Problem:

Ich würde gerne Werte aus mehreren Tabellen auslesen, bzw. sie sind in verschiedenen Tabellen verstreut.

Beispiel:

Code: Alles auswählen

$sql = "SELECT b.*, c.*
        FROM artists_techno as b, artists_house as c
	ORDER BY rand()"; 

if (!($result = $db->sql_query($sql))) { 
        
          message_die(GENERAL_ERROR, 'Konnte die artists nicht laden!', '', __LINE__, __FILE__, $sql); 
        } 
Somit bekomme ich nur die Werte aus artists_house...

Es muss vielleicht gesagt werden, dass die Tabellen identisch sind, nur der Tabellenname ist anders.

Kann mir jemand helfen?

Verfasst: 15.03.2008 15:58
von S2B
Schau dir mal UNION an. :wink:

Verfasst: 15.03.2008 16:08
von phillip
S2B ich liebe dich xD

Verfasst: 15.03.2008 16:17
von S2B
Mir reicht ein "danke". :P

Verfasst: 15.03.2008 17:51
von Pyramide
Offenbar ist dein Tabellendesign falsch...wenn sich in beiden Tabellen die gleichen Informationen befinden, solltest du techno/house als Feld definieren und dann ggf. danach filtern.

Verfasst: 15.03.2008 18:55
von phillip
ja da hast du recht, ich seh das auch ein wenig so. Aber es ist somit einfacher zu verwalten ;-)

Verfasst: 15.03.2008 19:49
von S2B
Oha, hatte mir den Code gar nicht angeschaut...

Du solltest das Tabellendesign auf jeden Fall umstellen. Was passiert denn zum Beispiel, wenn du weitere Musikstile hinzufügst? Letztendlich endet das in einem Haufen von Tabellen. Abgesehen davon sind die Befehle auch _wesentlich_ schneller, wenn alles aus einer Tabelle ausgelesen wird, vor allem dann, wenn passende Indizes gesetzt werden.

Ideal wären in so einem Fall zwei Tabellen: Eine für die Musikstile (jeder Musikstil erhält eine ID) und eine mit den Artists (jedem Artist wird eine Musikstil-ID zugeordnet). Das ganze kann später zum Beispiel auch relativ einfach auf ein System umgestellt werden, bei dem einem Artist mehrere Musikstile zugeordnet werden können. Das wäre mit deiner aktuellen Lösung nur mithilfe doppelter Datensätze möglich.

Verfasst: 15.03.2008 20:38
von phillip
S2B hat geschrieben:
Ideal wären in so einem Fall zwei Tabellen: Eine für die Musikstile (jeder Musikstil erhält eine ID) und eine mit den Artists (jedem Artist wird eine Musikstil-ID zugeordnet). Das ganze kann später zum Beispiel auch relativ einfach auf ein System umgestellt werden, bei dem einem Artist mehrere Musikstile zugeordnet werden können. Das wäre mit deiner aktuellen Lösung nur mithilfe doppelter Datensätze möglich.
ja das hab ich mir auch schon gemacht, in dieser Zeit als du mir die erste Antwort geschrieben hast ;-)

Ja ich muss mal schauen, was besser ist. Aber ich denke schon, dass ich das mit UNION doch lieber lasse.

Trotzdem hab ich wieder was gelernt ;-)