sql >> Database >  >> RDS >> Mysql

complexe SQL-query, veel tot veel

Zoiets.

Select people.id, people.name, count(interest.id)
from people
left join people_interests on people.id = people_interests.peopleid 
left join interests on people_interests.interestid = interests.interest.id
where interests.id in (select id from interests where interests.peopleid = @inputuserid)
group by people.id, people.name
order by count(interest.id)

In het Engels (wat het al dan niet duidelijker maakt.)

  • Selecteer de naam van de persoon en het aantal interesses dat ze delen
  • Van de tafel met mensen
  • Deelnemen aan de interessetabel zodat die tafel
  • Is alleen de interesse van de persoon die we proberen te matchen.
  • (groeperen op mensen
  • en sorteer op het aantal interesses dat overeenkomt.)

Bijgewerkt zonder de subquery maar minder duidelijk

Select people.id, people.name, count(interest.id)
from people
left join people_interests on people.id = people_interests.peopleid 
left join interests on people_interests.interestid = interests.interest.id
inner join interest i2 on (interests.id = i2.id and i2.people_id = @inputuserid)
group by people.id, people.name
order by count(interest.id)



  1. Geaggregeerde functie in een SQL-updatequery?

  2. MySQL BESTELLEN DOOR x-y/x ASC

  3. Het toevoegen van een kolom als een externe sleutel geeft de ERROR-kolom waarnaar wordt verwezen in de externe sleutelbeperking bestaat niet

  4. UUID of SEQUENTIE voor primaire sleutel?