login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Spellen die anderen speelden

Offline gothmog - 11/02/2009 18:00 (laatste wijziging 11/02/2009 19:51)
Avatar van gothmogLid Dag,

Ik sta even voor een raadsel... Ik wil namelijk een soort suggestiebox maken onder elk spel dat men speelt. Het spel dat men speelt heeft een bepaalde ID.

Nu zijn er een paar voorwaarden:
- Alleen de spellen worden getoond die zijn gespeeld door mensen die het huidige spel ook speelden
- Het moet worden gesorteerd op aantal keer gespeeld (DESC)

Voorwaarden zien er zo uit:

$A=Selecteer alle ip-adressen die spel x hebben gespeeld.

$B=Selecteer alle spelid’s die $A heeft gespeeld

$C=Sorteer alle spellen op aantal hits DESC van groep $A met spelid in $B

Nu is dit al mn query:

  1. SELECT *
  2. FROM spellen
  3. WHERE id=ANY(
  4. SELECT DISTINCT(spelid)
  5. FROM hits
  6. WHERE ip=ANY(
  7. SELECT DISTINCT(ip)
  8. FROM hits
  9. WHERE spelid='".$recs['id']."')


Database:
hits: spelid, ip, etc.
spellen: id (zelfde als spelid bij hits) etc.

Maar het sorteren wil niet lukken, iem. enig idee?

3 antwoorden

Gesponsorde links
Offline ranco - 11/02/2009 20:32 (laatste wijziging 11/02/2009 20:33)
Avatar van ranco PHP gevorderde Omdat je geen sortering in je SQL code hebt zitten?

  1. SELECT *
  2. FROM spellen
  3. WHERE id=ANY(
  4. SELECT DISTINCT(spelid)
  5. FROM hits
  6. WHERE ip=ANY(
  7. SELECT DISTINCT(ip)
  8. FROM hits
  9. WHERE spelid='".$recs['id']."'))
  10. GROUP BY (Veldnaam/veldnamen)
  11. ASC of DESC)
Offline gothmog - 12/02/2009 19:17
Avatar van gothmog Lid Ik moet sorteren op IP-adres (meeste ip adressen) en dat staat in een andere tabel dan spellen, namelijk in hits.
Moet ook nog eens de ip-adressen tellen per spel, dus sorteren op meeste ip adressen.
Offline ranco - 12/02/2009 21:31
Avatar van ranco PHP gevorderde Dit gaat je niet lukken in 1 query. Je zou MAX() kunnen gebruiken, hierdoor krijg je 1 resultaat terug met hierin je meest gespeelde spel. Maar het moeten er meerdere zijn. Dit is niet mogelijk met MAX.
(dit is wel mogelijk in x aantal lose queries, wat niet je bedoeling is lijkt mij)

Er blijft volgens mij niets anders over dan toch 5 aparte queries te maken middels het criterium: Max.
Bij querie nr2 t/m 5 gebruik je dan WHERE <> aan de resultaten van queries 1,2 enz...
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.208s