php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 13.10.2011, 12:46  
Neuer Benutzer
 
Registriert seit: 16.07.2010
Beiträge: 6
PHP-Kenntnisse:
Anfänger
spy15 befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Mysql Join: Felder ohne "2." Inhalt ausgeben

Hallo Leute
Ich habe ein Problem mit einer mysql Datenbankabfrage.
Hier erstmal das Tabellenlayout:

news:
id | title | content | datetime | image | level
--------------------------------------------------------------
1 | Titel | Inhalt | 2011-10-07 12:18:57 | | 0
2 | Test | T-Inhalt| 2011-10-07 13:11:50 | | 0

news_lang:
id | itemid | lang | title | content
--------------------------------------
14 | 1 | de-CH | Titu | Inhaut
15 | 1 | us-US | Title | Content

Query:
SELECT `news`.*,`news_lang`.`content` AS `lang_content`,`news_lang`.`itemid` AS `lang_id`,`news_lang`.`title` AS `lang_title`,`news_lang`.`lang` AS `lang_lang` FROM `news`,`news_lang` WHERE `news`.`id` = `news_lang`.`itemid` ORDER BY `news`.`datetime`

Resultat:
Array ( [id] => 1 [title] => Titel [content] => Inhalt [datetime] => 2011-10-07 12:18:57 [image] => [level] => 0 [lang_content] => Inhaut [lang_id] => 1 [lang_title] => Titu [lang_lang] => de-CH )
Array ( [id] => 1 [title] => Titel [content] => Inhalt [datetime] => 2011-10-07 12:18:57 [image] => [level] => 0 [lang_content] => Content [lang_id] => 1 [lang_title] => Title [lang_lang] => us-US )

Das Hauptproblem ist, das der Eintrag mit der ID 2 nicht angezeigt wird, da dessen ID nicht in news_lang existiert.
Wie kann ich das lösen, das dieser auch ohne Inhalt in news_lang angezeigt wird?

Ausserdem stört mich, das ich bei news_lang die Felder angeben muss (`news_lang`.`content`) und nicht * verwenden kann.
Der Hintergrund ist, weil ich nie weiss, wie viele Spalten es bei "news" und "news_lang" sind, und wie diese heissen (könnte ich herausfinden, aber wenns so gehen würde...)

Ist es ausserdem möglich, beim 2. Resultat die Felder von "news" nicht anzuzeigen?
Hat einer eine Idee, wie ich das lösen könnte?

Gruss Daniel
spy15 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 13.10.2011, 12:57  
Erfahrener Benutzer
 
Registriert seit: 03.08.2010
Beiträge: 1.140
PHP-Kenntnisse:
Anfänger
hausl wird schon bald berühmt werdenhausl wird schon bald berühmt werden
Standard

Zitat:
Das Hauptproblem ist, das der Eintrag mit der ID 2 nicht angezeigt wird, da dessen ID nicht in news_lang existiert.
Wie kann ich das lösen, das dieser auch ohne Inhalt in news_lang angezeigt wird?

Ausserdem stört mich, das ich bei news_lang die Felder angeben muss (`news_lang`.`content`) und nicht * verwenden kann.
LEFT JOIN, damit wird die "linke" Tablle jedenfalls zur Gänze zurückgegeben und ev. fehlende Werte aus "rechts" kommen mit NULL.
http://www.peterkropff.de/site/mysql...right_join.htm


Ausserdem .. arbeite mit Aliase...
http://www.peterkropff.de/site/mysql/alias.htm

Zitat:
Ist es ausserdem möglich, beim 2. Resultat die Felder von "news" nicht anzuzeigen?
Mysql liefert dir immer die Felder zurück, die Du nach SELECT [... diese hier ...] angibst.

LG
__________________
Keine Zahl != ein Zeichen das keine Zahl ist

Geändert von hausl (13.10.2011 um 13:05 Uhr).
hausl ist offline   Mit Zitat antworten
Alt 15.10.2011, 14:42  
Neuer Benutzer
 
Registriert seit: 16.07.2010
Beiträge: 6
PHP-Kenntnisse:
Anfänger
spy15 befindet sich auf einem aufstrebenden Ast
Standard

Vielen Dank für die Antwort, hat mir sehr geholfen
Habe das ganze nun wie folgt gelöst:
PHP-Code:
SELECT 
            
`item`.*,
            `
nl`.*, 
            `
nlu`.*
        
FROM 
            
(SELECT FROM `newsWHERE `level` <= '4' ORDER BY `datetimeLIMIT 0,5) AS `item`
        
LEFT JOIN 
            
(SELECT `itemid` AS `de-CH_id`,`content` AS `de-CH_con`,`title` AS `de-CH_titleFROM `news_langWHERE `lang` = 'de-CH') `nl`
        
ON `item`.`id` = `nl`.`de-CH_id`
        
LEFT JOIN 
            
(SELECT `itemid` AS `us-US_id`,`content` AS `us-US_con`,`title` AS `us-US_titleFROM `news_langWHERE `lang` = 'us-US') `nlu`
        
ON `item`.`id` = `nlu`.`us-US_id
Hab noch etwas an der Ausgabe gefeilt, jetzt wird alles/alle Sprachen in einer Zeile ausgegeben werden und ich kann genau festlegen wie viele Einträge gefetcht werden sollen.
Ist zwar etwas mehr Aufwand beim erstellen des Querys, aber weniger Aufwand beim Verarbeiten der Datenbank-Daten
Gruss
spy15 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
[Erledigt] Inhalt von einer URL ausgeben per Javascript Ahrta5 JavaScript, Ajax und mehr 4 31.08.2011 19:16
Problem mit Mysql Left Join Ambfrage pro-tech Datenbanken 11 22.05.2010 10:59
[Erledigt] Geschwindigkeitsprobleme mit großer normalisierter Datenmenge (Apache Logs franzcois Datenbanken 9 01.04.2010 13:33
[Erledigt] MySQL Link Resource in einer statischen Variablen speichern Lenki PHP-Fortgeschrittene 8 18.03.2010 16:37
[Erledigt] LEFT JOIN Daten ausgeben bei 1:n Beziehung Asipak PHP Tipps 2009 11 01.08.2009 15:27
[Erledigt] Inhalt mehrdimesionales array nach Sortierung ausgeben supervision PHP Tipps 2009 7 26.05.2009 21:08
brauche Hilfe bei mysql JOIN serious-cool Datenbanken 2 22.03.2009 20:29
Bei Suche in Tabelle nur Felder ausgeben die das Suchwort beinhalten MichaelB Datenbanken 6 01.03.2009 23:38
Join auf 2 verschiedene Felder Tommek Datenbanken 6 25.07.2006 20:39
suche tutorial: FORMULAR FELDER AUF INHALT PRÜFEN PHP Tipps 2006 7 25.01.2006 19:14
Suche Tipps für Persormance-Steigerung (Geld für Nützliches) Beitragsarchiv 18 16.08.2005 10:57
[Erledigt] Daten aus MySQL in einer zufälligen Reihenfolge ausgeben PHP-Fortgeschrittene 2 31.07.2005 12:42
Tabellenname bei Join als Variable mit ausgeben Datenbanken 0 22.07.2005 20:56
Suche MySQL Funktion zum Verbinden 2er Felder R4v3r Datenbanken 2 12.07.2005 23:49
Zugriff auf Felder bei Inner Join Datenbanken 2 27.04.2005 14:40

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mysql join, felder ohne inhalt mysql, mysql join auch ohne eintrag, mysql join ausgeben

Alle Zeitangaben in WEZ +2. Es ist jetzt 14:53 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