2010-02-06 6 views
3
bins 
---- 
id  min  max 
1  1  20 
2  21  40 
3  41  60 

pictures 
-------- 
id 
3 
11 
59 

Fondamentalement, je veux sélectionner l'ID d'image la plus élevée, puis sélectionner dans la table bin l'ID de corbeille correspondant. Par exemple, pour un pictures.id = 59 (le plus haut), je veux bins.id = 3. Quelqu'un peut-il m'aider avec une telle question? Quelque chose commeQuestion de requête MySQL simple

SELECT bins.id AS id 
FROM bins 
    JOIN pictures.id 
    ON bins.min < MAX(pictures.id) 
     AND bins.max > MAX(pictures.id) 

ne semble pas fonctionner. Merci!

Répondre

2
SELECT id 
FROM bins 
WHERE min < (Select Max(id) from Pictures) 
    AND max > (Select Max(id) from Pictures) 

Hope it helps

Max

+1

Est-ce que MySQL requiert le mot-clé ANY? Parce que les sous-requêtes ne retourneront qu'une seule valeur, alors TOUT, TOUT, QUEL, ou rien devrait signifier la même chose ici, non? – ErikE

+0

Vous avez raison. J'ai édité la réponse maintenant. Je vous remercie –

1

Essayez cette

Select id From Bins 
    Where (Select Max(id) From pictures) 
     Between Min and Max 
0

Si les limites de bin (bin.min et bin.max) augmentent avec identifiant comme dans les exemples de données, l'ID de la cellule pour l'identifiant de l'image 'max' peut alors être obtenu en utilisant:

SELECT MAX(bins.id) 
FROM bins 
JOIN pictures 
ON  bins.min <= pictures.id 
AND bins.max >= pictures.id 

Noter l'utilisation de <= et => - sinon les valeurs limites de la cellule seront effectivement exclues (par ex. picture.id = 41 ne correspond pas à une corbeille).

peut aussi écrire:

SELECT MAX(bins.id) 
FROM bins 
JOIN pictures 
ON  pictures.id BETWEEN bins.min AND bins.max 

Ce cassera si vos limites de bin ne sont pas triés par ordre id bin.