Ich habe diese Tabellen:mit mehreren Reihen
Blogs
id
name
user_id // author - relational to "users"
Benutzer
id
nickname
avatar
suscriptions
id
blog_id // relational to "blogs"
user_id // relational to "users"
Die Idee ist, auf der Seite, so etwas zu zeigen:
Blogname
Created By Stack
Suscriptions: Overflow, Easy, Robinson, Porter
ich alle Daten von blogs
holen
SELECT
b.id,
b.name,
b.user_id,
u.nickname as user_nickname,
u.avatar as user_avatar
FROM blogs b
LEFT JOIN users u ON b.user_id = u.id
Mit PHP habe ich ein Array mit allen blogs ID
, so Ich kann sie mit IN-Operator, wie folgt verwenden:
SELECT
s.id,
s.blog_id,
u.nickname,
u.avatar
FROM suscriptions s
LEFT JOIN users u ON s.user_id = u.id
WHERE s.blog_id IN (1, 2, 3)
Und t Wieder PHP zum Sortieren des Ergebnisses.
Aber gibt es einen besseren Weg? Ich habe darüber nachgedacht, nur MySQL und nicht PHP zu verwenden. Vielleicht alle Daten in nur einer Abfrage abrufen? Oder was wäre der beste Weg, um das zu bekommen?
Es ist wichtig zu beachten, dass ein blog
mehrere subscriptions
haben kann.
Ich fand diese Frage von 2012, die ein wenig ähnlich ist: JOIN three tables and aggregate data from multiple rows for every DISTINCT row in separate column Aber das OP sagt, dass es wirklich langsam ist, also bin ich jetzt ein wenig verloren.
Haben Sie Kern PHP oder einige Frameworks verwenden? –
@SultanAllaudeen nur PDO für Datenbankbehandlung –