2016-01-27 3 views
0

Я хочу FirstName и LastName самой высокой женщины в таблице.Имея более одного условия в Access с использованием SQL

image of table

Я попытался с помощью:

select FirstName, LastName 
from actors 
where height = (select max(height) from actors) and gender = 'F'; 

, но он не работает. Может ли кто-нибудь показать мне, как это делается?

ответ

2
select * from <TABLE NAME> where gender = 'F' 
and height = (SELECT max(height) from <TABLE NAME> where gender = 'F') 

Проверено на Access 2013.

+0

@Dexter Причина Ваш запрос не работает, потому что ваш внутренний запрос возвращал макс для обоих полов, а затем не было никакой высоты согласования при ограничивается «F» на внешнем запросе. Вы должны повторить условие (и) в обеих частях. – shawnt00

0

Хотя мой SQL ужасна, я думаю, что это может быть решена при выборе того, что вы хотите от подмножеств.
Выбрать все первые

SELECT a.FirstName, a.LastName, a.height FROM actors AS a WHERE a.gender = 'F'; 

Затем выберите максимальную (высота) от этого подмножества с дополнительными полями, которые вы хотите.

SELECT m.FirstName, m.LastName, max(m.height) FROM (SELECT.. AS a) AS m 

Затем отфильтровать то, что вы хотите, если вам нужно

SELECT f.FirstName, f.LastName FROM (SELECT..(SELECT..AS a) AS m) AS f 

Все вместе выглядит как этот

SELECT f.FirstName, f.LastName FROM 
(SELECT m.FirstName, m.LastName, max(m.height) FROM 
    (SELECT a.FirstName, a.LastName, a.height FROM 
    actors AS a WHERE a.gender = 'F') AS m 
)as f; 

я признаю это извилистый, но он работает в моей MySQL;)

Редактировать: Многие извиняются за ошибку, но я думал, что это касается MySQL. Это мой первый пост, и я догадываюсь, что у меня есть спусковой крючок. Я считаю, что подмножества являются базовым SQL.

+0

Вы запрашиваете объединение агрегатных и неагрегатных столбцов. Это не будет работать на Access. – shawnt00

0

Я думаю, что это сработает.

select FirstName, LastName 
from actors 
where height = (select max(height) from actors where gender = 'F') and gender = 'F';