2010-02-10 9 views
1

J'essaie d'obtenir ma tête s'il serait possible de faire quelque chose avec un multi-requête FQL plutôt que plusieurs appels API.FQL d'optimisation multi requête

Voici mon code:

var queries : Object = { 

"user_list":"SELECT uid2 FROM friend WHERE uid1 = "+uid 

,"event_id":"SELECT eid, start_time, end_time, location, pic, name FROM event 
WHERE eid IN (SELECT eid FROM event_member 
WHERE uid IN (SELECT uid2 FROM #user_list) 
AND rsvp_status='attending') AND start_time > " + nowSecs + " 
AND start_time < " + (nowSecs + 2500000) + " ORDER BY start_time ASC LIMIT 20" 

"user_name":"SELECT name FROM user 
WHERE uid IN (SELECT uid FROM event_member 
WHERE eid IN (SELECT eid FROM #event_id) 
AND uid IN (SELECT uid2 FROM #user_list) AND rsvp_status='attending')" 
}; 

Actuellement, il y a trop de résultats étant tiré par les cheveux dans mon « EVENT_ID » requête, je reçois actuellement la liste complète des événements pour chaque personne stockée dans le « user_list » requête, que je voudrais idéalement obtenir seulement 1 événement pour chaque personne, puis trier ces résultats. Je ne peux pas sembler faire cela, en utilisant LIMIT je reçois seulement 1 résultat au total, mais pas pour chaque personne. En outre, et surtout, je ne veux qu'un seul résultat par événement dans la requête 'nom_utilisateur', au moment où j'ai parfois plusieurs membres qui assistent au même événement, ce qui cause des problèmes car je n'ai aucun moyen de faire correspondre l'utilisateur nomme son événement correspondant une fois les résultats reçus. J'ai également remarqué que si le même utilisateur va deux événements différents contenus dans 'event_id', il n'y a qu'une seule occurrence de leur nom dans le résultat, ce qui n'est pas non plus souhaitable.

En ce moment je fais 20 appels API une fois que j'ai les résultats « » EVENT_ID puis trier les données retournées, ce qui ralentit vraiment mon application.

Quelqu'un peut-il suggérer comment je pourrais obtenir ce que je veux, et ainsi optimiser les requêtes s'il vous plaît?

Désolé pour le long courrier, mais cela a été faire sur mes seins pendant des jours!

Merci

Répondre

0

D'après ce que je peux dire à la lecture par le biais, vous voulez obtenir:

  1. Une liste de tous vos amis,
  2. L'événement le plus récent que chaque ami a dit qu'ils j'y assisterais.

Ceci est très similaire au problème présenté here, à ceci près qu'il va après 2 résultats pour chaque article et vous n'en cherchez qu'un seul.

+0

Malheureusement, cela ne facilite pas vraiment la langue facebook FQL n'a pas toutes ces commandes, il est à disposition. Je l'ai résolu d'une manière ou d'une autre mais je ne me rappelle plus comment, c'était en février! – x0b