php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 23.08.2009, 22:08  
Benutzer
 
Registriert seit: 05.08.2009
Beiträge: 93
PHP-Kenntnisse:
Anfänger
$gast befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] JOIN - Daten aus 3 Tabellen auslesen

Hi,

mein Script soll mir Ort, Username und das Avatar aus der Datenbank auslesen. Die Daten sind auf 3 Tabellen verteilt.

Der Aufbau:
  • jos_users
    • id - Ist die ID vom User
    • username - Ist der Username vom User
  • jos_community_users
    • userid - Ist die ID vom User
    • avatar - Ist die Adresse zum Avatar
  • jos_community_values
    • user_id - Ist die ID vom User
    • field_id - Legt fest um welche Art von Daten es sich bei der Spalte value handelt
    • value - Ist je nach field_id der Ort oder das Geburtsdatum

Mein Problem ist, dass in jos_community_values.value nicht nur der Ort sondern auch das Geburtsdatum jeweils als eigener Datensatz drin stehen, die Userid logischerweise öfter vorkommt und deswegen folgendes nicht geht:

PHP-Code:
AND 
     
#__community_fields_values.value = '".$mycity."' LIMIT "
     //Statt der Stadt liest der mir die Geburtstage. 
Also hab ich mir gedacht ich frage auch noch die field_id ab
Ich habe es mit diesem Query versucht:
PHP-Code:
        $query "SELECT
                    #__users.username AS user,
                    #__users.id AS userid,
                    #__community_users.avatar AS avatar,
                    #__community_fields_values.value AS city
                  FROM
                    #__users,
                    #__community_users,
                    #__community_fields_values
                  WHERE
                    #__users.id = #__community_users.userid
                  AND
                    #__users.id = #__community_fields_values.user_id
                  AND
                    #__community_fields_values.field_id = '0'
                  AND
                    #__community_fields_values.value = '"
.$mycity."' LIMIT ".$limit
Jetzt bekomme ich keine Datensätze mehr. Lösche ich die Datensätze mit dem Geburtsdaten aus der Datenbank und entferne in der Abfrage das "AND #__community_fields_values.field_id = '0'" funktioniert das ganze. (Die Userid kommt dann nur noch einmal in der Tabelle vor und in value stehen nur noch die Orte der User) Kann mir jemand sagen wie die Abfrage aussehen muss, damit das ganze funktioniert?

Ich hoffe, dass ich das problem halbwegs vernünftig erklärt habe und ihr versteht was ich vor habe.


edit: Ich hol den Thread jetzt nicht extra noch mal hoch, wollte aber sagen, dass ich es hinbekommen habe. Es lag nicht an meiner Abfrage sondern an der Funktion die den Wert für $mycity geholt hat. Die hat nämlich nur solange funktioniert wie keine Geburtsdaten in der Spalte "community_fields_values.field_id" standen. Eigentlich ein dummer fehler. Ich danke euch beiden trotzdem für eure Hilfe!

MfG

Geändert von $gast (28.08.2009 um 11:46 Uhr).
$gast ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 23.08.2009, 22:16  
Moderator
 
Benutzerbild von Asipak
 
Registriert seit: 18.07.2005
Beiträge: 4.072
Asipak sorgt für eine eindrucksvolle AtmosphäreAsipak sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Mein Problem ist, dass in jos_community_values.value nicht nur der Ort sondern auch das Geburtsdatum jeweils als eigener Datensatz drin stehen, die Userid logischerweise öfter vorkommt und[...]
Hört sich so an als sei dort der Fehler! Wieso speicherst du das Geburtsdatum nicht direkt in der Tabelle "jos_users"? Das Geburtsdatum gehört zur Person wie der Name!

Gruß
Asipak ist offline   Mit Zitat antworten
Alt 23.08.2009, 22:21  
Benutzer
 
Registriert seit: 05.08.2009
Beiträge: 93
PHP-Kenntnisse:
Anfänger
$gast befindet sich auf einem aufstrebenden Ast
Standard

Das soll ein Joomla Modul für eine Joomla Erweiterung (jomSocial) werden. Ich habe keinen Einfluss darauf wie die Daten abgelegt werden. Stimmt denn die Abfrage (von der Syntax her)? Das ist für meine Verhältnisse schon bisschen kompliziert.

edit:

So sieht die Tabelle jos_community_fields_values aus:



Wenn field_id = 0 ist handelt es sich bei value um den Wohnort. Ist field_id = 46 handelt es sich bei value um das Geburtsdatum.

Geändert von $gast (23.08.2009 um 22:24 Uhr).
$gast ist offline   Mit Zitat antworten
Alt 23.08.2009, 22:42  
Moderator
 
Benutzerbild von Asipak
 
Registriert seit: 18.07.2005
Beiträge: 4.072
Asipak sorgt für eine eindrucksvolle AtmosphäreAsipak sorgt für eine eindrucksvolle Atmosphäre
Standard

Hmm, bei mir funktioniert die Abfrage. Bekommst du eine Fehlermeldung (mysql_error()) ?

Code:
SELECT
                    users.name AS user,
                    users.id AS userid,
                    com_users.avatar AS avatar,
                    com_values.value AS city
                  FROM
                    users,
                    com_users,
                    com_values
                  WHERE
                    users.id = com_users.users_id
                  AND
                    users.id = com_values.users_id
Code:
Hallo 	1 	bla 	bla
Hallo 	1 	bla 	2009-02-02
Ich 	2 	guckguck 	Hier
Asipak ist offline   Mit Zitat antworten
Alt 23.08.2009, 22:58  
Benutzer
 
Registriert seit: 05.08.2009
Beiträge: 93
PHP-Kenntnisse:
Anfänger
$gast befindet sich auf einem aufstrebenden Ast
Standard

Komisch. Nein, ich bekomme von der Methode getAffectedRows 0 zurück. Ein Fehler wird mir nicht ausgegeben. Mit dem Statement muss irgendwas nicht stimmen.

Zitat:
WHERE
#__users.id = #__community_users.userid
AND
#__users.id = #__community_fields_values.user_id
AND
#__community_fields_values.field_id = '0'
AND
#__community_fields_values.value = '".$mycity."' LIMIT ".$limit;
Betrifft 0 Datensätze.
$gast ist offline   Mit Zitat antworten
Alt 23.08.2009, 23:11  
Moderator
 
Benutzerbild von Asipak
 
Registriert seit: 18.07.2005
Beiträge: 4.072
Asipak sorgt für eine eindrucksvolle AtmosphäreAsipak sorgt für eine eindrucksvolle Atmosphäre
Standard

Lass mal probeweise
Code:
AND
#__community_fields_values.field_id = '0'
AND
#__community_fields_values.value = '".$mycity."' LIMIT ".$limit;
weg.
Asipak ist offline   Mit Zitat antworten
Alt 24.08.2009, 12:55  
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

Für solche Fälle musst Du u.U. doppelt auf jos_community_values joinen. Du könntest auch bspw. mit GROUP_CONCAT arbeiten, müsstest die Daten dann aber in PHP auseinanderfrickeln.
__________________
--
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
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] LEFT JOIN Daten ausgeben bei 1:n Beziehung Asipak PHP Tipps 2009 11 01.08.2009 15:27
Daten aus 3 Tabellen lesen parafi Datenbanken 5 19.01.2009 23:56
LEFT OUTER JOIN für mehr als 2 Tabellen ? Alpha Centauri Datenbanken 4 05.04.2006 16:18
[Erledigt] Daten aus mehreren Tabellen holen Datenbanken 0 19.09.2005 17:14
Daten auslesen und ändern Datenbanken 2 17.09.2005 19:28
Aus 2 Tabellen die daten auslesen Datenbanken 5 16.09.2005 15:41
Daten eintragen und auslesen Rettungsdackel Datenbanken 0 14.09.2005 16:29
MySQL Daten aus verknüpften Tabellen auslesen ? PHP Tipps 2005-2 2 27.06.2005 03:21
[Erledigt] Join mit 3 Tabellen Datenbanken 21 16.05.2005 23:20
[Erledigt] Generierte Daten von anderem Host auslesen PHP Tipps 2005 2 15.05.2005 20:54
INNER JOIN mit 4 tabellen ??? Dragon26mFR Datenbanken 5 01.05.2005 18:51
[Erledigt] Daten aus 2 Tabellen auslesen Datenbanken 6 15.01.2005 16:54
Daten aus *.MPQ-Dateien mittels fread auslesen? PHP-Fortgeschrittene 21 06.01.2005 14:40
[Erledigt] Daten auslesen - Daten hinzufügen - Daten Speichern PHP Tipps 2004-2 1 04.12.2004 10:59
[Erledigt] Daten von anderer Homepage auslesen PHP Tipps 2004-2 5 02.12.2004 18:49

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
joomla tabelle auslesen, jos_community_fields_values user_id field_id value, php join auslesen, jomsocial benutzerdaten auslesen, jomsocial user abfragen, aus 3 tabellen daten auslesen, auslesen von join tabellen, php left join tabelle auslesen, joomla wie lösche ich datensatz, um die gesamten kundendaten aus diesen drei tabellen auszulesen?, php query 3 tabellen einmal mit limit, jomsocial daten abfragen, aus drei tabellen daten in eine, joomla daten aus mysql tabelle einlesen, in php werte aus datenbank auslesen mit field_id, daten aus datenbank anzeigen joomla, daten aus drei tabellen auslesen, php join tabellen auslesen, #__community_fields_values, benutzerdaten aus jomsocial auslesen

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