2011-12-22 1 views
1

밤낮으로 하위 쿼리 구문을 검색했으며 여전히 어둠에 빠져있는 것 같습니다. 그 중에서도이 작업을 완료하려면 고급 부속 조회가 더 필요할 수 있습니다. 나는 최선을 다해 이것을 설명하려고 노력할 것이다.SQL 2005는 PHP를 사용하여 Access 2003 DB 고급 하위 쿼리를 연결했습니다.

우리는 발권 시스템에 Access DB를 사용하고 있으며 (1997 년에 다시 구축되었습니다.) 백엔드 용으로 SQL Server 2005를 사용하고 있습니다. 저는 현재 PHP로 스크립트를 작성하여 고객에게 차단 시간 (미리 구매 한 경우)이 0 미만으로 떨어졌을 때 이메일을 보냅니다. SQL과 ODBC를 사용하여 코딩 경험이 거의 없기 때문에 지금은 작동하는 몇 가지 쿼리를 만들 수있었습니다. 이 쿼리에 더 많은 데이터를 추가해야하지만 필자는 제 한계에 훨씬 못 미치고 ​​있습니다.

우리 (차단 시간/이벤트 코드 201)와 함께 시간을 선불 한 모든 별개의 고객을 끌어이 쿼리

$query1 = "SELECT [Customer Name], MAX([Incident #]) 
      FROM [Incidents] 
      WHERE [Event Code] = 201 
      GROUP BY [Customer Name] 
      ORDER BY [Customer Name] ASC"; 

내가 서브 쿼리에 대한 지식을 제한하기 때문에, 나는 경우 찾을 수있는 다른 쿼리가 최신 '사건 번호'에는 '이벤트 코드'203이 있습니다. 그렇다면 포함시키지 마십시오.

while(odbc_fetch_row($query1)) 
{ 
    $query2 = "SELECT [Customer Name] 
       FROM [Incidents] 
       WHERE [Customer Name] = '$customer_name' 
       AND [Incident #] > $incident_num 
       AND [Event Code] = 203"; 

    if(!odbc_fetch_row($query2)) { 
     //list customers 
    } 
} 

이러한 쿼리는 마법처럼 작동하지만 나뿐만 아니라 데이터에 액세스 할 수 있도록, 나는 외부 쿼리에서 '사용 시간'을 하나로 병합을 좋아하고 또한 열 '시작 날짜'를 포함 할 .

답변

1

방법에 대해 : 당신은에 의해 그룹에 의해 순서가 필요하지 않습니다

SELECT [Customer Name], MAX([Incident #]) 
    FROM [Incidents] a 
    WHERE [Event Code] = 201 
    AND [Customer Name] Not IN 
     (SELECT [Customer Name] 
     FROM [Incidents] b 
     WHERE b.[Customer Name] = a.[Customer Name] 
     AND b.[Incident #] > a.[Incident #] 
     AND [Event Code] = 203) 
    GROUP BY [Customer Name] 

. 고객 이름에 대해 조금 의심 스럽지만 고객 ID에 대해 궁금합니다.

+0

고마워요, 그게 ... 내가 너무 멀지 않았다고 생각해. ㅎ. –