2016-09-19 2 views
0

DB에서 일부 정보를 검색하려고합니다.동일한 ID와 연결된 모든 행에 날짜가있는 경우에만 테이블에서 필드 선택

나는 여러 항목와 짝을 일부 주문이 있습니다 다음 표

orderNo item shipping 
1050  1  0000-00-00  
1050  2  0000-00-00 
1050  6  2016-09-18 
2000  2  0000-00-00 
2006  1  2016-09-05 
2006  2  0000-00-00 

있습니다. 항목이 2 일 때 배송 날짜가 자동으로 추가됩니다 (해당 기능은 정상적으로 작동 함). 그러나 모든 나머지 항목에 날짜가 첨부되어있을 때만 스크립트를 추가해야합니다. 예를 들어

: -> 주문 번호 '1050': 항목 6은 날짜가 있지만, 항목 1은 어떤 일이 없다, 그래서 우리는 2 가 선적 날짜를 추가하지 않습니다 -> 주문 번호 '2000'만있다 항목 2가 있으므로 잘 보내면 배송일이 추가됩니다 -> 주문 번호 '2006': 항목 1에 날짜가 있으므로 다시 항목 2에 날짜를 추가 할 수 있습니다. 순서 2 이외의 항목을 가지고 있으며, 다른 쌍 항목 중 적어도 하나는 다음 더 배송일이없는 내가 무시 할

, 그것은

그래서 위의 질의에
//adding the shipping date to item 2 
$sql = "UPDATE orders 
     SET shipping = '".$shipping."' 
     WHERE orderNo = '".$orderNo."' AND item = '2'"; 
Db::getInstance()->query($sql); 

//add some kind of query to check whether shipping of rest items is not zero. If it is '0000-00-00' then do not proceed 
SELECT orderNo FROM orders WHERE orderNo = '".$orderNo."' AND shipping in other items than 2 has a date 
     //If query returns true then proceed and execute the following 
     $new_payment = new itemPayment(); 
     //else do nothing 

, 주문 번호 (예 : '1050')를 전달하고 있으며 다른 모든 항목 (2 제외)에 배송 날짜가 있는지 확인하고 싶습니다. 그들 모두가 다음 단계로 나아 간다면, 그렇지 않다면 아무것도하지 마십시오.

다른 쿼리를 시도했지만 아무 효과가 없습니다. 그것은 단지 mysql 쿼리로 할 수 있습니까? 또는 PHP 코드가 필요합니까?

정말로 도움이 될만한 것이 있거나 올바른 길로 나를 안내 할 수 있다면 감사하겠습니다. 이 같은

답변

1

이 작업을 수행하는 이해할 수있는 방법으로, 쿼리에 대한 것입니다 :

SELECT orderNo FROM orders WHERE orderNo = '".$orderNo."' AND item !=2 AND shipping>'0000:00:00' 

을 다음 php num rows을 실행 검색어와 일치하는 행의 수를 확인합니다. 결과가 0 이상이면 처리하지 말아야 함을 의미합니다.

+0

안녕하세요, 저는 그것이 해결책일지도 모른다고 생각합니다. 그러나 결국 배송은 0000-00-00이어야합니다. 즉, 날짜가 0 인 하나 이상의 행 (항목 2 제외)을 반환하면 진행되지 않습니다. 그게 효과가 있다고 생각합니다. 감사합니다 – shieldcy

+0

당신은 의지대로 쿼리를 변경할 수 있습니다. num 행을 사용하여 대답을 결정하는 개념을 보여 주기만했습니다.) – Manos

1

뭔가 당신을 도움이 될 것입니다

$sql = "Select orderNo from orders where item != '2' AND shipping > '2000-01-01'"; 

대안 :

$sql = "Select orderNo from orders where item != '2' AND shipping > '0'"; 
+0

안녕하세요. 보다 단순하게하기 위해, 나는 쌍 번호가 다른 항목 (2 제외)에 날짜가있는 경우에만 주문 번호를 검색하려고합니다. 기본적으로 내 테이블을 보면, 예를 들어 주문 번호 1050이 없습니다. 메시지 맨 아래에 추가 한 쿼리는 아무 것도 반환하지 않습니다. 그러나 품목 1과 6 둘 다 배송 날짜가있는 경우 (모두 볼 수 있듯이 모든 주문이 1050과 짝을 이룹니다) 확인을 진행합니다. 그것이 의미가 있기를 바랍니다. – shieldcy

+0

이 (가) 편집되었습니다. 그것 agian 테스트. :) – MRustamzade

+0

당신의 질의가 실제로 나를 도왔다, 완벽하게 작동하지 않지만 약간의 수정이 필요하다. (예를 들어 운송은 0과 같아야한다.) 그래서 쿼리가 행을 반환하면, 이는 다른 항목을 의미한다. 2는 날짜가 0000-00-00이므로, 진행하지 않아야합니다.) 감사합니다 – shieldcy

관련 문제