【问题标题】:Mysqli Getting Multiple Values from Multiple TablesMysqli 从多个表中获取多个值
【发布时间】:2015-09-19 08:43:41
【问题描述】:

我正在努力解决这个问题,这可能很简单,但我就是无法让它发挥作用。使用 PHP/MYSQLI 我试图从两个表中获取数据,而第一个表将具有获取 everything 的基础,第二个表可能有也可能没有与第一个表的数据匹配的数据,所以我需要第二个表来返回空值。比如……

第一个表'客户':

CustomerID    Name             School
------------------------------------------
1623          Bob Smith        BON
1785          Betty Davis      FOOT
1854          John Miller      BECK
1547          Kate Lake        BON

第二个表'Ybk':

CustomerID      Frame     Type
------------------------------------------
1623            001       CC
1854            012       CC

我想从这两个表中得到的是两件事之间的一些变量......

1) 如果我想从第一个表中选择学校(例如 WHERE Cust.School='BON'),我想得到这个结果:

CustomerID    Name             School      Frame     Type
---------------------------------------------------------
1623          Bob Smith        BON         001       CC
1547          Kate Lake        BON         

2) 或者,如果我选择所有内容,我会得到这个结果:

CustomerID    Name             School      Frame     Type
---------------------------------------------------------
1623          Bob Smith        BON         001       CC 
1785          Betty Davis      FOOT
1854          John Miller      BECK        012       CC
1547          Kate Lake        BON

现在,当我尝试一些不同版本的 SELECT 语句时,我只返回两个表中的结果,而不是所有与 Ybk 字段一起返回的 Cust 字段(如果它们也存在)。帮助!谢谢!

【问题讨论】:

    标签: php select mysqli


    【解决方案1】:

    这是一个相当简单的 LEFT JOIN:

    SELECT * FROM Cust LEFT JOIN YbK using (CustID) where School='BON';
    
    # CustID, Name,        School, Frame, Type
    '1547',   'Kate Lake', 'BON',  NULL,  NULL
    '1623',   'Bob Smith', 'BON',  '001', 'CC'
    

    SELECT * FROM Cust LEFT JOIN YbK using (CustID);
    
    # CustID, Name,           School, Frame,  Type
    '1547',   'Kate Lake',    'BON',  NULL,   NULL
    '1623',   'Bob Smith',    'BON',  '001',  'CC'
    '1785',   'Betty Davis',  'FOOT', NULL,   NULL
    '1854',   'John Miller',  'BECK', '012',  'CC'
    

    LEFT JOIN 将返回 JOIN 中第一个表中的所有行,并用 null 填充第二个表中没有匹配行的任何缺失列。行在USING 子句中的列上匹配,这有助于在结果输出中合并匹配的列。

    完整的语法在MySQL手册here中给出

    【讨论】:

    • 完美!我认为使用 JOIN 语句会很简单,但我无法让 JOIN 的语法正确。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-20
    • 2014-09-19
    • 2016-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多