sql >> Database >  >> RDS >> Mysql

SQL Laatste foto's van contacten (gegroepeerd op contact)

Soms is de enige manier om een ​​doel te bereiken het maken van een stukje SQL dat zo lelijk en gruwelijk is, dat het alternatief van meerdere zoekopdrachten aantrekkelijk wordt :-)

Ik zou slechts één zoekopdracht doen om een ​​lijst van uw vrienden te krijgen en vervolgens voor elke vriend de drie meest recente foto's krijgen. Iets als:

friend_list = sqlexec "select user2_id from relations where user1_id = "
                      + current_user_id
photolist = []
for friend in friend_list:
    photolist += sqlexec "select user_id, id, date_uploaded from photos"
                 + " where user_id = "
                 + friend.get("user2_id")
                 + " order by date_uploaded desc fetch first 3 rows only"

# Now do something with photolist

Je hebt geen hebt om het als één query te doen, ben je beperkt tot één reguliere expressie voor het matchen van een gruwelijk patroon. Natuurlijk zou het leuk zijn om "slim" te zijn, maar het is zelden nodig. Ik geef de voorkeur aan een pragmatische benadering.




  1. MySQL - COUNT(*) gebruiken in de WHERE-component

  2. hoe de top 5 maximale waarden in mytable te selecteren

  3. SQL-query om het aantal keren te tellen dat bepaalde waarden in meerdere rijen voorkomen

  4. Helperfunctie invoegen/bijwerken met PDO