쿼리

2009-07-30 2 views
0

내가 쿼리가 다른 행에 같은 수를 반환 호핑?쿼리

table data 
table data 
Insert into customer_order values ('00001', '03-Apr-09', '07-apr-09','St. Andrew St'); 
Insert into customer_order values ('00002', '05-Apr-09', '01-May-09', 'St. Andrew St'); 
Insert into customer_order values ('00003', '12-Apr-09', '27-Apr-09', 'Union St'); 
Insert into customer_order values ('00004', '12-Apr-09', '17-Apr-09', 'St. Andrew St'); 

Insert into Dish values ('D0001', 'Pasta bake',  'yes', '6.00'); 
Insert into Dish values ('D0002', 'Fish pie',  'no', '9.00'); 
Insert into Dish values ('D0003', 'Steak and chips', 'no', '14.00'); 
Insert into Dish values ('D0004', 'Stuffed peppers', 'yes', '11.50'); 
Insert into Dish values ('D0005', 'Ham and rice' , 'no', '7.25'); 
Insert into Dish values ('D0006', 'Lamb curry'  , 'no', '8.50'); 

Insert into Drink values ('DR0001', 'Water', 'soft',  '1.0'); 
Insert into Drink values ('DR0002', 'Coffee', 'hot',  '1.70'); 
Insert into Drink values ('DR0003', 'Wine' , 'alcoholic', '3.00'); 
Insert into Drink values ('DR0004', 'Beer' , 'alcoholic', '2.30'); 
Insert into Drink values ('DR0005', 'Tea' , 'hot'  , '1.50'); 

Insert into food_order values ('F000001', '000001', 'D0003', '6'); 
Insert into food_order values ('F000002', '000001', 'D0001', '4'); 
Insert into food_order values ('F000003', '000001', 'D0004', '3'); 
Insert into food_order values ('F000004', '000002', 'D0001', '10'); 
Insert into food_order values ('F000005', '000002', 'D0002', '10'); 
Insert into food_order values ('F000006', '000003', 'D0002', '35'); 
Insert into food_order values ('F000007', '000004', 'D0002', '23'); 

Insert into drink_order values ('D000001', '000001', 'DR0001', '13'); 
Insert into drink_order values ('D000002', '000001', 'DR0002', '13'); 
Insert into drink_order values ('D000003', '000001', 'DR0004', '13'); 
Insert into drink_order values ('D000004', '000002', 'DROOO1', '20'); 
Insert into drink_order values ('D000005', '000002', 'DR0003', '20'); 
Insert into drink_order values ('D000006', '000002', 'DR0004', '15'); 
Insert into drink_order values ('D000007', '000003', 'DR0002', '35'); 
Insert into drink_order values ('D000008', '000004', 'DR0001', '23'); 
Insert into drink_order values ('D000009', '000004', 'DR0003', '15'); 
Insert into drink_order values ('D0000010', '000004', 'DR0004', '15'); 
+0

이 작동하지 작동하지 않았다 http://stackoverflow.com/questions/1207241/problem-with-sql-function – Fredou

답변

1

"food_order"와 "dish"는 어떻게 관련되어 있습니까? 쿼리에서 두 테이블 간의 관계를 지정하지 않은 것처럼 보입니다 ..... 각 접시의 최대 값을 원하면 해당 특정 값의 최대 값을 지정해야합니다. 지금 당장 검색하는 것입니다. 테이블 내의 모든 엔트리의 최대치.

Select 
    n_portions, dish_name 
from 
    food_order, dish 
where 
    n_portions = 
    (select max (n_portions) FROM food_order f2 WHERE f2.dish# = dish.dish#) 
0

당신이 부속에 food_order의 최대 n_portions에 n_portions의 값을 설정됩니다

그냥 (모르게) 여기 가정, 당신은 아마 뭔가를해야합니다.

(모두는 아님) 각각에 대해 최대 값을 얻으려는 경우 n_portions 및 dish_name별로 그룹화해야합니다. 또한 food_order와 접시 사이에 조인이 없습니다.

0
select dish_name, max(n_portions) 
from  food_order f 
inner join dish  d on d.dish_id = f.dish_id 
+0

에 연결 –

0

당신은 조인을 사용할 수 있습니다 대신 하위 쿼리의에 의해 집계/그룹 : 문제는 하위 음식 _ 순서와 요리 사이의 조인 더 있다는 사실에서 유래

SELECT MAX(n_portions), dish_name 
FROM food_order 
INNER JOIN dish ON (food_order.dish = dish.dish) --guessing a bit here 
GROUP BY dish_name 
0

고르다. 따라서 항상 food_order에있는 n_max의 최대 값을 반환 할 것입니다. 매번 같은 값입니다.

제공되는 정보에서 정확히 찾고자하는 내용을 말하기는 어렵지만 하위 선택 (최대 선택)에 대한 필터가 있어야한다고 말하면 충분합니다. 뭔가 같은 ...

Select fo.n_portions, d.dish_name 
from food_order fo, dish d 
where fo.n_portions= 
(select max (n_portions) 
FROM food_order fo where food_order.dish_id = d.dish_id);