Ich weiß, dass diese Frage schon oft hier gefragt, aber schließlich konnte ich meine Antwort nicht gefunden, was ich will.mysql - rechts verbinden zwei Tabellen als eine zu viele Relation
Meine Frage ist:
Ich habe zwei Tabellen und die Struktur dieser Tabellen ist als:
tabelle1: item_id, store,title,available,shipping
table2: item_id, review_rate,user_id,review_title
Diese Tabellen sollten als one to many
Beziehung verknüpft werden.
Zum Beispiel, wenn die Daten in diesen Tabellen sind als:
table1:
item_id store title available shipping
-------------------------------------------------------
11 glasses ..........................
12 dresses ..........................
.
.
.
table2:
item_id review_rate user_id review_title
--------------------------------------------------
11 3 10023 good item
11 5 10024 nice item
12 1 10024 nice one
.
.
.
dann sollte das Ergebnis sein, wie nach dem Beitritt:
afterJoin:
item_id store title available shipping rate people_reviewed
-----------------------------------------------------------------------
11 .................................... 4 2
12 .................................... 1 1
Die query
ich beizutreten versucht ist als:
CREATE OR REPLACE VIEW afterJoin AS
SELECT i.*,round(AVG(r.review_rate)) as rate,count(r.user_id) as people_reviewed
FROM table1 i
RIGHT JOIN table2 r ON i.item_id = r.item_id
aber dies nur eine Zeile zurückgeben.
mysql ist nicht gleich SQL-Server – Jens
Vielen Dank, um meinen Fehler zu verbessern –
Warum verwenden Sie ein Recht beitreten hier? Warum nicht eine Linke beitreten? Wenn Sie einen rechten Join verwenden, erhalten Sie alle Bewertungen, auch wenn die Zeile in Tabelle1 nicht vorhanden ist. Es ist möglicherweise in Ordnung, aber die meisten Leute denken die andere Richtung. Sie möchten alle Artikel und ihre Bewertungen (falls vorhanden). So wie Sie diesen Code haben, erhalten Sie keinen Artikel zurück, wenn er keine Überprüfung hat. –