내 mysql 구문에 대한 도움이 필요합니다.하나의 필드에서 동일한 데이터 셀 값을 갖고 있지만 다른 데이터 셀 값이 다른 두 개의 레코드
내 테이블에는 사용자 정보가 있지만 배송지와 청구서의 주문 번호는 동일합니다.
때때로 사람들은 청구서 수신 주소로 배송하기를 선택합니다. 사용자가 배송 주소를 입력하지 않은 주문 번호 레코드와 배송 주소를 입력 한 위치 만 필요합니다.
청구서 수신 주소와 배송 주소가 모두 입력 된 경우 배송 주소 만 필요합니다.
표에서 한 주문 번호에 대해 중복 된 필드가있는 경우가 있습니다. 그 혼란 경우 아래를 살펴 :
------------SQL TABLE -----------
order_id | address_type | user_name | address
100 | billto | Homer Simposn | 123 Main St.
100 | shipto | Homer Simpson | 455 XYZ Ave.
101 | billto | Peter Griffin | 780 111th St.
102 | billto | Charles Xavier | 555 Bergen St.
102 | shipto | Jean Gray | 555 Bergen St.
내가 할 출력을 필요
100 - shipto - Homer Simposn - 455 XYZ Ave.
101 - billto - Peter Griffin - 780 111th St.
102 - shipto - Jean Gray - 555 Bergen St.
여기 전용 "shipto"레코드를 반환합니다 내 구문입니다.
SELECT * FROM order_info AS A WHERE A.address_type = 'shipto' AND
NOT EXISTS (SELECT B.address_type
from order_info AS B
where B.address_type = A.address_type
and B.address_type = 'billto')
나는이 SQL 구문의 모든 작업을 수행 할 수 있으며, 더 shipto
는 다음 billto
반환이없는 IF
같은 것을 원하십니까?
감사합니다.
매우 혁신적인 ... 지금부터이 시점에서 물건을 보게 될 것입니다. thanks :) –
답장을 보내 주셔서 감사합니다. 나는 당신이 의미하는 것에 여전히 약간의 도움이 필요하다. 나는 SELECT * FROM jos_vm_order_user_info를 사용했다. WHERE order_id = (select MAX (B.order_id) FROM jos_vm_order_user_info B WHERE A.address_type = B.address_type)'그러나 최대 발견 된 주문 번호를 가진 2 개의 레코드 만 반환한다. billto'와'ship to to '을 의미한다. 레코드 번호와 마찬가지로 '101 - billto - Peter Griffin - 780 111th St.'과 102 - shipto - Jean Gray - 555 Bergen St.' – Far
다른 방법으로해야합니다.'order_id '에 가입하고 최대 값을 선택하십시오. 'address_type'. 내 대답에 쿼리를 복사하고'order_info'를'jos_vm_order_user_info'로 바꾸고 그것이 작동하는지 확인하십시오. –