SQL Hilfe

kraadde

Benutzer
Beiträge
5
Sorry, aber ich bin Anfänger und stehe am Berg...
Mein Problem:
Ich habe 2 dB Tabellen, vpa1_users_profil und eine vpa1_users. Ich möchte ein Dump haben welches eine Kombination beider Tabellen darstellt.
Folgendes habe ich versucht:
select
vpa1_users.name,
vpa1_users.username,
vpa1_users.email,
vpa1_user_profiles.user_id,
vpa1_user_profiles.profile_key,
vpa1_user_profiles.profile_value
from
vpa1_users,
vpa1_user_profiles
Where
vpa1_users.id = vpa1_user_profiles.user_id
und es funktioniert, ABER die Darstellung ist wie folgt:

upload_2016-11-18_21-22-57.png
und was ich möchte ist eine Tabelle die so aussieht:
Kann mir jemand auf die Sprünge helfen? Ich habe mich schon dumm und dämlich gesucht und keine Lösung gefunden. Ich kenne PHP und könnte auch etwas programmieren, aber ich brauche einfach eine reine SQL Abfrage, weil ich es irgendwo einbauen muss.

upload_2016-11-18_21-28-37.png

Meine dB Tabellen sehen wie folgt aus:
vpa1_users:
upload_2016-11-18_21-33-58.png

vpa1_users_profile:
upload_2016-11-18_21-36-38.png
 
Werbung:
und es funktioniert, ABER die Darstellung ist wie folgt:

Dein Bild paßt nicht zum gezeigten SQL. Die Spalten im Result kommen so wie im SQL-Befehl definiert.

Davon abgesehen: Du solltest den JOIN expliziet definieren, also direkt den JOIN definieren und dazu die JOIN-Condition (von Lateral Join als Sonderform sehe ich jetzt mal ab), dann wird das auch besser lesbar. Jedenfalls: ich unterstelle Dir, daß die gezeigte Darstellung NICHT zum gezeigten SQL paßt.

Übrigens paßt auch das gezeigte Wunschergebniss nicht zum SQL. Eigentlich paßt exakt nix zu irgend etwas.
 
Hallo,

also die beiden dB Tabellen stimmen ganz sicher, weil ich sie mit phpmyadmin herausgelesen habe. Die von mir kopierte Darstellung des Dumps stimmt auch. Das Wunschergebnis habe ich nicht fertiggebracht, sondern schnell in einem Excel geschrieben, damit ich hier zeigen kann was ich haben möchte..
Du hast insofern recht als die SQL Abfrage folgende war (hab das falsche hier kopiert):

select
vpa1_user_profiles.user_id, vpa1_user_profiles.profile_key, vpa1_user_profiles.profile_value,
vpa1_users.name,
vpa1_users.username,
vpa1_users.email
from
vpa1_users
inner join vpa1_user_profiles
on
vpa1_users.id = vpa1_user_profiles.user_id


Eine anderer Tipp?
 
Werbung:
Zeilen zu Spalten ist nicht ohne. Kommen die Felder (PLZ, Ort, etc.) nur einmal pro User vor oder gibt es welche die z.B. mehrere PLZ Werte haben?

Grundsätzlich würde ich dir in diesem einen Fall zu der simpelsten Variante raten:
Code:
select
u.user_id,
u.name,
u.username,
u.email,
p1.profile_value AS profile_plz,
p2.profile_value AS profile_ort,
p3.profile_value AS profile_str,
--[.usw.]
from
vpa1_users u
LEFT JOIN vpa1_user_profiles p1 ON u.id = p1.user_id AND p1.profile_key = 'profile.plz'
LEFT JOIN vpa1_user_profiles p2 ON u.id = p2.user_id AND p1.profile_key = 'profile.ort'
LEFT JOIN vpa1_user_profiles p3 ON u.id = p3.user_id AND p1.profile_key = 'profile.str'
--[.usw.]
 
Zurück
Oben