Hinweis: Dies ist kein Duplikat von: mySQL - Create a New Table Using Data and Columns from Three Tables. Bei dieser Frage geht es darum, Daten aus mehreren Tabellen zu übernehmen und tatsächlich eine neue Tabelle mit diesen Daten zu erstellen. Ich suche nur nach bereits vorhandenen Daten. Die Antwort auf diese Frage ist sehr spezifisch für die gestellte Frage und hilft mir nicht wirklich, da der Code in der Antwort nicht erklärt wird. Also nein, das ist nicht "genau die gleiche Frage".Kombinieren von Daten aus mehreren MySql-Tabellen in mehreren Zeilen in eine einzelne Zeile für eine SELECT-Anweisung
Ich habe eine Frage über die Verbindung von zwei MySQL-Tabellen, auf die ich keine Antwort finden kann. Die üblichen Arten von Joins scheinen nicht das zu sein, wonach ich suche. vielleicht ist das nicht möglich, da bin ich mir nicht sicher.
So habe ich meine erste Tabelle wie folgt aus (Tabellen zum Beispiel Zwecke vereinfacht):
ID Name Email Phone
1 John [email protected] 000-123-4567
2 Jane [email protected] 000-890-1234
Meine zweite Tabelle auf diese Weise angeordnet ist:
ID UserID meta_key meta_value
1 1 location_review 4
2 1 condition_review 1
3 1 price_review 5
4 2 location_review 4
5 2 condition_review 2
6 2 price_review 4
ich mit einigen bestehenden Software arbeite, Ich mache nur ein paar Modifikationen, also kann ich im Idealfall tun, was ich brauche, ohne zu ändern, wie die Software zu viel geschrieben ist.
Ich versuche, diese Tabellen verknüpfen zu können, so dass sie wie folgt aussehen:
ID Name Email Phone location_review condition_review price_review
1 John [email protected] 000-123-4567 4 1 5
2 Jane [email protected] 000-890-1234 4 2 4
Also muss ich die Zeilen aus Tabelle 2 hinzufügen, die die Benutzer-ID an die Daten bereits in Tabelle 1 haben.
Da es sich um bestehende Software gibt es bereits einige Code in Ort, um diese zwei Tabellen zu verknüpfen, ist es hier:
SELECT *
FROM wpnf_comments as comment
INNER JOIN wpnf_commentmeta AS meta
WHERE comment.comment_post_ID = $prop_ID
AND meta.meta_key = 'rating'
AND meta.comment_id = comment.comment_ID
AND (comment.comment_approved = 1
OR comment.user_id = $userID
)
Was ich tue, ist: Früher gab es nur eine einzige „Rating“ Wert sein, , in der Meta-Tabelle gespeichert. Sie können es in der oben genannten Verbindung sehen, wo es heißt:
AND meta.meta_key = 'rating'
Allerdings versuche ich, das mit 3 separaten Bewertungen zu ersetzen. Der Join oben, der früher bei nur einer Bewertung funktionierte, funktioniert nicht wirklich, wenn ich mehrere Bewertungen habe.
Ich würde sehr schätzen jeden Einblick in, was ich tun muss, um dies zu beheben. Ich benutze auch PHP dafür, wenn das wichtig ist.
EDIT
Dies ist der Code, den ich bis jetzt haben. Es zeigt alle korrekten Spaltennamen, die ich jetzt brauche, aber die tatsächlichen Werte/Daten werden nicht angezeigt. Es gibt 0 Zeilen zurück.
SELECT
*
FROM
wpnf_comments t1
INNER JOIN
(SELECT
comment_id as comment_id2,
MAX(IF(meta_key = 'location-rating', meta_value, NULL)) AS location_rating,
MAX(IF(meta_key = 'condition-rating', meta_value, NULL)) AS condition_rating,
MAX(IF(meta_key = 'maintenance-rating', meta_value, NULL)) AS maintenance_rating,
MAX(IF(meta_key = 'professionalism-rating', meta_value, NULL)) AS professionalism_rating,
MAX(IF(meta_key = 'contact-rating', meta_value, NULL)) AS contact_rating,
MAX(IF(meta_key = 'availability-rating', meta_value, NULL)) AS availability_rating,
MAX(IF(meta_key = 'responsiveness-rating', meta_value, NULL)) AS responsiveness_rating,
MAX(IF(meta_key = 'price-rating', meta_value, NULL)) AS price_rating
FROM
wpnf_commentmeta
GROUP BY comment_id) temp_t
ON t1.comment_post_ID = temp_t.comment_id2
Kann jemand bitte helfen Sie mir mit diesem? Ich habe jetzt mindestens zwei Stunden damit verbracht, ohne Glück. –
Es wäre besser, wenn Sie [Normalisierung] (https://stackoverflow.com/questions/246701/what-is-normalization-or-normalization) in Ihrer relationalen Datenbank aufgrund der wiederkehrenden Meta_key-Werte verwenden würden. Dies würde bedeuten, dass Sie eine dritte Tabelle für Ihre Daten benötigen würden. Können Sie eine dritte Tabelle erstellen oder sind Sie nur auf diese beiden Tabellen beschränkt? – MinistryofChaps
@MinistryofChaps die Software wird Daten in diese zwei vorhandenen Tabellen setzen, es sei denn, ich rekodiere ziemlich viel davon.Im Idealfall möchte ich nur diese beiden verwenden, sonst müsste ich ständig die dritte Tabelle mit den Daten aus diesen beiden Tabellen aktualisieren. –