【问题标题】:SQL Query from 3 tables来自 3 个表的 SQL 查询
【发布时间】:2011-09-15 01:21:51
【问题描述】:

使用 PHP 和 mySQL。我有 4 个表格,AgencyInfo、TypeCodes、PrimarySta 和 MutualAid。 AgencyInfo 具有唯一 ID 作为主要 ID。 Typecodes 具有唯一的 TID 作为主要。 PrimarySta 和 MutualAid 将 ID 和 TID 作为它们的主键。

我正在尝试创建一个记录集,该记录集将根据来自机构信息的 ID 为我提供来自 PrimarySta 和 MutualAid 的记录。 TypeCodes 中有 47 条静态记录。 PrimarySta 和 MutualAid 每个 ID 将有 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 次,每个 typecode 一次。我使用 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,但似乎无法正确使用语法。

谁能帮助我正确的语法?

谢谢!

【问题讨论】:

    标签: php mysql dreamweaver


    【解决方案1】:
    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
    

    【讨论】:

    • 这似乎没有给我正确的数据。目前具有数据的 ID 是 1、2、6、7 和 14。当我将 7 硬编码到查询中时,它会返回所有 ID 的记录。
    • 对不起,没有实际数据很难测试。我在最后一个内部连接中添加了一个 and。看看这是否有帮助。
    • 似乎没有帮助。我尝试切换primarysta和typecodes,它似乎在mutualaid.id = %s上正确排序,但是列表没有47个条目,而是重复5次。另一个表配置会更容易吗?
    • 让它与我的原始查询的修改一起工作。可能不是最干净或最好的方法,但它确实有效。 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) 感谢您的帮助!你为我指明了正确的方向。
    猜你喜欢
    • 2013-09-19
    • 1970-01-01
    • 1970-01-01
    • 2014-11-16
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 2015-06-09
    相关资源
    最近更新 更多