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

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

В принципе, я хочу выбрать самый высокий идентификатор изображения, а затем выбрать из таблицы bin идентификатор бина, который он соответствует. Например, для picture.id = 59 (самый высокий), я хочу bins.id = 3. Может ли кто-нибудь помочь мне с таким запросом? Что-то вродеЗапрос на простой запрос MySQL

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

не работает. Благодаря!

ответ

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

Надеется, что это помогает

Макс

+1

Требуется ли MySQL для ЛЮБОГО ключевого слова? Потому что подзапросы возвратят только одно значение, поэтому ЛЮБЫЕ, ВСЕ, НЕКОТОРЫЕ или ничего не должны означать то же самое здесь, нет? – ErikE

+0

Вы правы. Теперь я отредактировал ответ. спасибо –

1

Попробуйте

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

Если пределы бункера (bin.min и bin.max) увеличение с идентификатором, как в выборочных данных, то идентификатор бункера для идентификатора изображения «max» можно получить, используя:

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

Обратите внимание на использование <= и => - в противном случае предельные значения бункера будут эффективно исключены (например, picture.id = 41 не соответствует биту).

Может также быть написано:

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

Это сломается если ваши ограничения бен не отсортированы с бен ид.

Смежные вопросы