2011-09-14 3 views
0

PHP와 mySQL 사용. 나는 총 4 개의 테이블, AgencyInfo, TypeCodes, PrimarySta 및 MutualAid를 가지고 있습니다. AgencyInfo는 기본 ID가 고유합니다. 유형 코드는 기본 TID가 고유합니다. PrimarySta 및 MutualAid는 기본 키로 ID와 TID를 함께 사용합니다.3 테이블의 SQL 쿼리

나는 Agencyinfo의 ID를 기반으로 PrimarySta 및 MutualAid의 레코드를 제공하는 레코드 세트를 만들려고합니다. TypeCodes에는 47 개의 정적 레코드가 있습니다. PrimarySta 및 MutualAid는 ID 당 47 개의 항목 (유형 코드)을 갖습니다. PrimarySta에는 ID, TID 및 12 개의 INT 필드가 있으며 MutualAid는 동일한 ID, TID 및 12 개의 INT 필드와 메모라는 13 번째 필드 (텍스트)를가집니다.

데이터를 단계별로 실행하는 while 루프를 사용하고 있습니다. ID는 POST 또는 SESSION을 통해 전달됩니다.

Page Layout 
           Primary Station 
TypeCode    P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 P11 P12 
           Mutual Aid 
         M1 M2 M3 M4 M5 M6 M7 M8 M9 M10 M11 M12 
Notes(M13) 

각 유형 코드에 대해 한 번씩 47 번 반복됩니다. Dreamweaver를 사용하여 초기 SQL 쿼리를 어셈블했지만 내 연구에서 최상의 구문을 사용하지 못하는 것으로 보입니다. 다음 코드는 TypeCodes 및 PrimarySta와 같이 2 개의 테이블로 작업했지만 MutualAid에 추가하면 무언가가 망가졌습니다. 나는 내 문제를 추측하고있어

$colname_Display = $_SESSION['sta_id']; } 
mysql_select_db($database_DB, $MyDB); 
$query_Display = sprintf("SELECT * FROM primarysta, typecodes, mutualaid 
WHERE primarysta.tid, mutualaid.tid = typecodes.tid AND primarysta.id = %s", 
GetSQLValueString($colname_Display, "int")); 

primarysta.tid, mutualaid.tid = typecodes.tid 라인입니다. INNER JOIN이 사용 된 것을 보았지만 구문을 올바르게 처리 할 수없는 것 같습니다.

누구나 적절한 구문으로 나를 도울 수 있습니까?

감사합니다.

답변

0
SELECT 
    * 
FROM 
    primarysta a 
INNER JOIN 
    typecodes b 
ON 
    a.tid = b.tid 
INNER JOIN 
    mutualaid c 
ON 
    a.tid = c.tid 
    and c.tid = b.tid 
WHERE 
    a.id = %s -- where the %s is your string 
+0

이것은 정확한 데이터를 제공하지 않는 것 같습니다. 현재 ID가 1, 2, 6, 7 및 14 인 ID가 있습니다. 쿼리에 7을 하드 코드하면 모든 ID에 대한 레코드가 반환됩니다. –

+0

죄송합니다. 실제 데이터가 없으면 테스트하기가 어렵습니다. 마지막 내부 결합에와를 더했습니다. 그것이 도움이되는지보십시오. –

+0

도움이되지 않는 것 같습니다. 나는 primarysta와 typecodes를 바꾸려고 시도했다. 그리고 그것은 mutualident.id = % s에 적절하게 정렬 된 것처럼 보인다. 그러나 47 개의 엔트리 대신에 그리스트는 5 번 반복된다. 다른 테이블 구성으로 쉽게 만들 수 있습니까? –