php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 27.10.2011, 23:23  
Benutzer
 
Registriert seit: 11.05.2011
Beiträge: 38
PHP-Kenntnisse:
Anfänger
thedarkknight befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Tabellen verknüpfen ohne Verluste

Hallo zusammen,

Habe ein Problem mit dem zusammenführen von Werten mehrerer Tabellen.
Also beschreibe ich mal kurz meine herangehensweise (detailliert unten im query zum selbstnachlesen):

1) mache einen query auf einige Tabelle und verknüpfe diese über id's mit anderen tabelle.
=> das Ergebnis was ich zurückbekomme ist schon ganz gut.
2) verknüpfe das Ergebnis mit einer weiteren Tabelle(server_votes)
=> ich bekomme am Ende nur ein Ergebnis über die Einträge die in allen Tabelle vorhanden sind.

Wunsch:

ich würde aber gern ein Ergebnis bekommen mit allen Einträgen aus dem Schritt 1 Ergebnis und solchen aus Schritt 2.. für die es in der "server_votes" Tabelle keinen "verknüpfungspartner" gibt würde ich gerne als wert "0" zurückliefern.

Das Ganze nochmal als "Bild" statt worten:

Ergebnis nach Schritt1:
name: server 1 | id: 257
name: server 2 | id: 258
name: server 3 | id: 259

Ergebnis nach Verknüpfung mit "server_votes":
name: server 2 | id: 258 | votes: 325

ich will aber:
name: server 1 | id: 257 | votes: 0
name: server 2 | id: 258 | votes: 325
name: server 3 | id: 259 | votes: 0

zum Aufbau der "server_votes" Tabelle:
nur 2 spalten, einmal die ID mit der ich verknüpfe und dann den Wert an den ich ran will (welcher 0 sein soll wenn es keine Verknüpfung gibt).

PHP-Code:
SELECT DISTINCT
                       ezcontentobject
.*,
                       
ezcontentobject_tree.*,
                       
ezcontentclass.serialized_name_list as class_serialized_name_list,
                       
ezcontentclass.identifier as class_identifier,
                       
ezcontentclass.is_container as is_container,
                        
ezcontentobject_name.name as name,  ezcontentobject_name.real_translation
                   FROM
                      ezcontentobject_tree
,
                      
ezcontentobject,ezcontentclass
                      
ezcontentobject_name
                      
server_votes
                      
                   WHERE
                      ezcontentobject_tree
.parent_node_id 72 and
                     
server_votes.server_id ezcontentobject_tree.main_node_id AND
                      
ezcontentclass.version=AND
                      
ezcontentobject_tree.contentobject_id ezcontentobject.id  AND
                      
ezcontentclass.id ezcontentobject.contentclass_id AND
                         
ezcontentobject.contentclass_id  IN  48 ) AND
                       
ezcontentobject_tree.contentobject_id ezcontentobject_name.contentobject_id and
                                   
ezcontentobject_tree.contentobject_version ezcontentobject_name.content_version and
 ( 
ezcontentobject_name.language_id ezcontentobject.language_mask AND
     ( (   
ezcontentobject.language_mask - ( ezcontentobject.language_mask ezcontentobject_name.language_id ) ) & )
   + ( ( ( 
ezcontentobject.language_mask - ( ezcontentobject.language_mask ezcontentobject_name.language_id ) ) & ) )
   <
     ( 
ezcontentobject_name.language_id )
   + ( ( 
ezcontentobject_name.language_id ) )
 ) 

                      AND 
ezcontentobject_tree.is_invisible 0
                      
                       
AND 
 
ezcontentobject.language_mask 

                 ORDER BY server_votes
.vote_count ASC
LIMIT 0
25 
Gibt es da eine Möglichkeit? Danke schon mal für die Antworten.

Geändert von thedarkknight (28.10.2011 um 00:13 Uhr).
thedarkknight ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 28.10.2011, 00:25  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Die Antwort dürfte kurz und prägnant LEFT JOIN heißen.


Dazu solltest Du
Zitat:
Code:
                   FROM
                      ezcontentobject_tree,
                      ezcontentobject,ezcontentclass
                      , ezcontentobject_name
                      , server_votes
auf ein JOIN Statement und die zugehörigen WHERE Stücke nach ON portieren. Auch Aliases solltest Du Dir mal anseghen, damit kannst Du Unübersichtlichkeiten wie ezcontentobject_tree.contentobject_id vereinfachen. Einheitlich einrücken wäre auch vorteilhaft.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 28.10.2011, 00:40  
Benutzer
 
Registriert seit: 11.05.2011
Beiträge: 38
PHP-Kenntnisse:
Anfänger
thedarkknight befindet sich auf einem aufstrebenden Ast
Standard

Ok danke für die Antwort. Hab mal nach left join gegoogled und das klingt gut ja. Leider kommt der ganze query nicht direkt von mir so dass ich ihn beeinflussen könnte. Ich kann daher weder aliase oder formatierung nutzen. Das ist CMS erzeugt und ich habe nur die Möglichkeit Tabellen hinzuzfügen und diese zu verknüpfen. Nen LEFT JOIN scheint mir daher fast unmöglich (auch wenn es der richtige weg wäre). Ich kann nur Stücke "zwischenschieben". Habe jetzt mal was probiert aber das liefert mir auch nicht das korrekte Ergebnis(=die spalten der server_votes Tabelle fehlen). Fehlt da was oder muss ich ALLES auf left join umbauen? Das würde nämlich nicht gehen, gäbe es dann Alternativen oder habe ich die Grenzen des CMS dann erreicht?

PHP-Code:
SELECT DISTINCT
                       ezcontentobject
.*,
                       
ezcontentobject_tree.*,
                       
ezcontentclass.serialized_name_list as class_serialized_name_list,
                       
ezcontentclass.identifier as class_identifier,
                       
ezcontentclass.is_container as is_container,
                        
ezcontentobject_name.name as name,  ezcontentobject_name.real_translation
                   FROM
                      ezcontentobject_name
,
                      
ezcontentobject,ezcontentclass
                      
ezcontentobject_tree
                      LEFT JOIN server_votes
ON server_votes
.server_id ezcontentobject_tree.main_node_id
                      
                   WHERE
                      ezcontentobject_tree
.parent_node_id 72 and
                      
ezcontentclass.version=AND
                      
ezcontentobject_tree.contentobject_id ezcontentobject.id  AND
                      
ezcontentclass.id ezcontentobject.contentclass_id AND
                         
ezcontentobject.contentclass_id  IN  48 ) AND
                       
ezcontentobject_tree.contentobject_id ezcontentobject_name.contentobject_id and
                                   
ezcontentobject_tree.contentobject_version ezcontentobject_name.content_version and
 ( 
ezcontentobject_name.language_id ezcontentobject.language_mask AND
     ( (   
ezcontentobject.language_mask - ( ezcontentobject.language_mask ezcontentobject_name.language_id ) ) & )
   + ( ( ( 
ezcontentobject.language_mask - ( ezcontentobject.language_mask ezcontentobject_name.language_id ) ) & ) )
   <
     ( 
ezcontentobject_name.language_id )
   + ( ( 
ezcontentobject_name.language_id ) )
 ) 

                      AND 
ezcontentobject_tree.is_invisible 0
                      
                       
AND
 
ezcontentobject.language_mask 0

                 ORDER BY server_votes
.vote_count ASC
LIMIT 0
100 
thedarkknight ist offline   Mit Zitat antworten
Alt 28.10.2011, 00:43  
Benutzer
 
Registriert seit: 11.05.2011
Beiträge: 38
PHP-Kenntnisse:
Anfänger
thedarkknight befindet sich auf einem aufstrebenden Ast
Standard

Ach Quatsch! Das hat geklappt!! Ich brauch die Ausgabe gar nicht, ist ja auch klar, dass die fehlt. Gebe es beim select ja gar nicht an. Thema gelöst danke!
thedarkknight ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Problem mit Ajax - Session Problem halskrause PHP Tipps 2009 10 12.01.2010 02:27
[Erledigt] Problem mit Mehrsprachigkeit Sniper_Kotaro PHP Tipps 2009 2 16.12.2009 11:47
Problem beim Download Management mistermint PHP Tipps 2009 8 24.10.2009 11:34
Umlaut Problem nokieone PHP Tipps 2009 7 16.10.2009 19:30
Problem mit Basedir in PhP cmuch05 Datenbanken 9 08.01.2009 14:17
[Erledigt] Problem: PHP Selbe Datei mehr als 1 Mal soulan PHP Tipps 2008 13 28.11.2008 22:51
Problem Upload mehrere Dateien und schreiben in DB Lapje PHP Tipps 2008 1 22.10.2008 13:12
utf8 Problem (Daten aus DB auslesen) go1denboy PHP Tipps 2008 1 23.09.2008 12:19
Problem mit swfobjects R4v3r JavaScript, Ajax und mehr 8 21.09.2008 14:17
[Erledigt] Galerie Problem... coraplanet PHP Tipps 2008 4 06.06.2008 13:42
datensätze defekt oder problem mit dem einlesen? Ministry Datenbanken 4 06.07.2006 18:42
problem!!! PHP Tipps 2006 6 08.02.2006 11:06
Smarty und PHP-Skript Problem PHP Tipps 2004-2 2 03.12.2004 22:27
Problem mit alter JavaScript-Funktion woods PHP Tipps 2004 1 13.08.2004 13:34


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:06 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum