2010-10-15 3 views
0

Hé les gars, je suis vraiment en train de tout chambouler. J'ai essayé mais ça a échoué. J'ai suivi trois tables avec le polard d'utilisateur recherché 2 fois aux jours différents, avec des amis augmentés dans la deuxième recherche dans la table b. J'ai juste besoin de construire la requête qui me donnera les deux amis nouvellement ajoutés (ne sera pas présent à la fin de la liste de la deuxième recherche). Dans le tableau c il y aura 20 amis de polard affichés avec USID 1 puis 22 amis avec 2 USID signifie enregistrements au total seront 42.Sql friends datatable query

table a    
uid name 
1  karos 
2  polard 

table b        
usid umid name friends 
1  2 polard 20 
2  2 polard 22 

table c 
usrid usid name friends 
1  1 hansy 10 
2  1 boje 23 
.  .  .  . 
.  .  .  . 

Votre aide sera appréciée geatly. Merci d'avance.

Répondre

1

Est-ce Qu'est-ce que tu cherches?

SELECT usrid 
FROM c 
WHERE usid = 2 
AND usrid NOT IN (SELECT usrid FROM c WHERE usid = 1) 

Si vous voulez que les deux valeurs USID soient dynamiques et, en supposant que vous devez faire pour la dernière USID pour polard, il pourrait être quelque chose comme

SELECT usrid 
FROM c 
WHERE usid = 
     SELECT MAX (usid) FROM b WHERE name = 'polard') 
AND usid NOT IN 
     (SELECT usrid FROM c WHERE usid = 
      SELECT MAX (usid) - 1 FROM b WHERE name = 'polard')) 

Cela suppose que la Les valeurs usid sont des valeurs d'incrémentation d'entier spécifiques à chaque umid de la table b.

Si elles ne sont pas disponibles, alors cela sera un peu plus compliqué car vous devez faire un Ordre par et obtenir la 2ème à la dernière valeur umid