sql >> Database >  >> RDS >> Mysql

Een array gebruiken in een SQL-query

Hier is een algemene lay-out voor je, maak drie tabellen zoals je noemde, ik heb het hieronder als voorbeeld geschetst

[TABELLEN]

  • gebruikers
  • volgers
  • berichten

In de gebruikerstabel moet u op zijn minst kolommen hebben zoals userid (auto incremented value / primary key).

De tabel met volgers zou zoiets moeten hebben als userid, wat overeenkomt met de gebruikerstabel userid, een kolom met followid die ook het id # voor de volger uit de gebruikerstabel zou hebben.

Dan zou je voor je berichtentabel ook een gebruikers-ID willen hebben, dus wanneer elk bericht wordt gemaakt, zou het de id van de gebruikerstabel hebben.

Dan zou je iets moeten doen als:

SELECT p.*
FROM posts AS p
WHERE p.userid IN (SELECT followid FROM followers WHERE userid = ###)
ORDER BY p.date DESC

Nu hangt het er echt van af hoe u de gebruikers-ID krijgt om dit uit te zoeken. Als je de gebruikers-ID doorgeeft met een sessie nadat ze zich hebben aangemeld, vergelijkbaar met iets als Facebook, dan zou je userid =### kunnen veranderen in iets als userid =".$_SESSION['userid']." Maar nogmaals, het hangt er echt van af hoe je de gebruikers-ID doorgeeft, maar het bovenstaande zou je in ieder geval een beetje op weg moeten helpen.

Zorg ervoor dat u indexen op de kolommen userid, followid plaatst, zodat wanneer de tabel groter wordt, de joins snel worden uitgevoerd.



  1. Hoe kan de INSERT ... ON CONFLICT (id) DO UPDATE... syntaxis worden gebruikt met een sequentie-ID?

  2. Postgres integer-arrays als parameters?

  3. Waarom is de InnoDB-tabel veel groter dan verwacht?

  4. Import CSV-bestandsfout:kolomwaarde met kolomscheidingsteken