2016-08-22 2 views
0

영업 담당자를 위해 제어판이있는 곳에서 코드를 설정하려고합니다. 내 제어판에서 담당자가 호출하는 고객을 제어 할 수 있습니다. 고객이 구입 한 항목을 기반으로MYSQL (WHERE - IF - SELECT/IN 문)

즉 영업 담당자 01에 대한 내 제어판에 '자동차'를 할당 한 경우 '자동차'카테고리에서 장난감을 구입 한 고객에게만 전화 할 것입니다. 내 "Cars"카테고리의 모든 장난감은 "Vehicles"라는 별개의 파일에 저장됩니다.

customer (File) 
+--------+-----------+--------+ 
| name | phone  | toy | 
+--------+-----------+--------+ 
| Gail | 777-1234 | Truck | 
| June | 777-1235 | Doll | 
| Mary | 777-1236 | Racer | 
| Bill | 777-1237 | Ball | 
| Jon | 777-1238 | Jeep | 
+--------+-----------+--------+ 



control_panel (File) 
+----------+--------+ 
| user  | desc | 
+----------+--------+ 
| sales_01 | Cars | 
+----------+--------| 


vehicles (File) 
+---------+ 
+ item | 
+---------+ 
| Truck | 
| Racer | 
| Jeep | 
+---------+ 

아웃이 코드를 테스트하기 위해 노력하고, 나는 내 코드가 작동이 부분을 다음과 같이

내 파일입니다. 이제

select 
    c.name , c.phone 
FROM 
    customer c 
WHERE 
    c.toy IN (
      SELECT 
       v.item 
      FROM 
       vehicles v 
      ) 

난 후, 자동차 만의 통화 화면에 표시됩니다 구입 한 고객을 사용자 "sales_01"내 제어판 화면에 "자동차"를 선택한 경우에만 있도록 내 WHERE 문을 컨디셔닝하기 위해 노력하고있어 사용자 "sales_01".

이것은 테스트했지만 제대로 작동하지 않는 일부 코드의 한 예입니다.

SELECT 
    c.name , c.phone 
FROM 
    customer c , control_panel p 
WHERE 
    (IF p.desc = "Cars" 
     THEN (c.toy 
      IN (SELECT 
        v.item 
       FROM 
        vehicles v) 
      ) 
    END) 

도움을 주시면 감사하겠습니다. 고마워.

+0

테이블과 샘플 코드가 있습니다. 그러나, 나는 당신이 성취하고자하는 것을 모른다. 질문을 편집하고 샘플 코드와 원하는 결과를 제공 할 수 있습니까? –

+0

스키마가 이해가되지 않습니다. 스키마를 정상화해야합니다. – symcbean

답변

1

먼저 테이블 vehiclescategory 필드를 추가하여 스키마를 리팩터링하는 것이 좋습니다. 이렇게하면 control_panelcustomer 사이에 적절한 관계가 형성됩니다. 이 경우에는 SELECT c.name, c.phone FROM customer c LEFT OUTER JOIN vehicles v ON c.toy = v.items WHERE v.category = 'Cars'을 할 수 있습니다. 나는 다른 제안을 추가하는 것을 좋아했을 것이다. 그러나 나는 당신이 지금 일할 수있는 무언가를 원한다고 느낀다. 게다가 현재 시간을 할애 할 여유가 없습니다. 희망이 도움이됩니다.