SQL-запрос из 3-х таблиц - PullRequest
       5

SQL-запрос из 3-х таблиц

0 голосов
/ 14 сентября 2011

Использование PHP и MySQL. У меня есть всего 4 таблицы: AgencyInfo, TypeCodes, PrimarySta и MutualAid. AgencyInfo имеет уникальный идентификатор в качестве основного. Typecodes имеет уникальный TID в качестве основного. PrimarySta и MutualAid имеют оба идентификатора и TID в качестве своего первичного ключа.

Я пытаюсь создать набор записей, который будет выдавать мне записи из PrimarySta и MutualAid на основе идентификатора из agencyinfo. В TypeCodes 47 статических записей. PrimarySta и MutualAid будут иметь 47 записей (типов) для каждого идентификатора. PrimarySta имеет поля ID, TID и 12 INT, MutualAid имеет те же поля ID, TID и 12 INT, а также 13-е поле (текст), называемое notes.

Я использую цикл 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-запроса, но, судя по моим исследованиям, возможно, он использует не лучший синтаксис. У меня был следующий код, работающий только с 2 таблицами, TypeCodes и PrimarySta, но когда я добавил в 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, но не могу понять, что синтаксис правильный.

Может кто-нибудь помочь мне с правильным синтаксисом?

Спасибо!

1 Ответ

0 голосов
/ 14 сентября 2011
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
...