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

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

Я пытаюсь создать набор записей, который будет давать мне записи из PrimarySta и MutualAid на основе идентификатора из agencyinfo. В TypeCodes имеется 47 статических записей. PrimarySta и MutualAid будут иметь 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, но когда я добавил 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, но не могу правильно понять синтаксис.

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

Спасибо!


person Jeremy DeStefano    schedule 14.09.2011    source источник


Ответы (1)


person    schedule
comment
Кажется, это не дает мне правильных данных. В настоящее время идентификаторы, у которых есть данные, равны 1, 2, 6, 7 и 14. Когда я жестко кодирую 7 в запросе, он возвращает мне записи для всех идентификаторов. - person Jeremy DeStefano; 14.09.2011
comment
Извините, трудно проверить без фактических данных. Я добавил и к последнему внутреннему соединению. Посмотрите, поможет ли это вообще. - person Eric R.; 14.09.2011
comment
Вроде не помогло. Я попытался переключить первичную и типовую коды, и кажется, что он правильно сортируется на MutualAid.id = %s, однако вместо 47 записей список повторяется 5 раз. облегчит ли это другая конфигурация стола? - person Jeremy DeStefano; 14.09.2011
comment
Получил работу с модификацией моего исходного запроса. Вероятно, не самый чистый или лучший способ сделать это, но он работает. SELECT * FROM primarysta a, typecodes b, mutualaid c WHERE (a.tid = b.tid AND c.tid = b.tid) AND (a.id = %s AND c.id = %s) Спасибо за помощь! Вы указали мне правильное направление. - person Jeremy DeStefano; 14.09.2011