sql >> Databáze >  >> RDS >> Mysql

složitý SQL dotaz, mnoho k mnoha

Něco takového.

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)

V angličtině (což může nebo nemusí být jasnější.)

  • Vyberte jméno osoby a počet zájmů, které sdílí
  • Od stolu lidí
  • Připojte se k tabulce zájmů tak, aby tato tabulka
  • Jde pouze o zájmy osoby, které se snažíme najít.
  • (skupina podle lidí
  • a seřaďte podle počtu odpovídajících zájmů.)

Aktualizováno bez dílčího dotazu, ale méně jasné

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. Indexy primárních a cizích klíčů

  2. Vypršel časový limit připojení:Nodejs Google App Engine do Cloud MySql

  3. Přírůstkové zatížení v SSIS

  4. DateTime::CreateFromFormat pro PHP 5.2.14