【问题标题】:MySQL select data from table and inner join the union all selection from another two identical tablesMySQL 从表中选择数据并内连接联合从另外两个相同表中的所有选择
【发布时间】:2015-02-17 06:17:28
【问题描述】:

首先,我有两个表,我使用以下查询进行连接

选择 o5.id 作为 id, DATE_FORMAT(o5.vreme_isplata, '%d.%m.%Y') AS payed_date, o5.ime_prezime AS 名称, o5.adresa AS 地址, o5.mesto AS 城市, o5.embg AS mb, o5.serial_no AS 票证, o1.uplata 作为 uplata, o5.pdd AS danok, o5.isplata AS neto_dobivka, o1.iznos_isplaten AS bruto_dobivka 从 o5 内连接o1 ON o5.serial_no = o1.serial_no WHERE o1.transaction_type = '我'

它的工作正常 现在我需要从另一个表“o1_payout_storno”中选择数据,女巫与o1相同 我需要从o5INNER JOIN 中选择数据,从o1o1_payout_storno 中选择UNION ALL

【问题讨论】:

    标签: php mysql join union


    【解决方案1】:

    应该这样直截了当:

    SELECT 
      o5.id AS id, 
      DATE_FORMAT(o5.vreme_isplata, '%d.%m.%Y') AS payed_date, 
      o5.ime_prezime AS name, 
      o5.adresa AS address, 
      o5.mesto AS city, 
      o5.embg AS mb, 
      o5.serial_no AS ticket, 
      o1.uplata AS uplata, 
      o5.pdd AS danok, 
      o5.isplata AS neto_dobivka, 
      o1.iznos_isplaten AS bruto_dobivka 
    FROM o5 
    INNER JOIN o1 ON o5.serial_no = o1.serial_no 
    WHERE o1.transaction_type = 'I' 
    UNION ALL
    SELECT 
      o5.id AS id, 
      DATE_FORMAT(o5.vreme_isplata, '%d.%m.%Y') AS payed_date, 
      o5.ime_prezime AS name, 
      o5.adresa AS address, 
      o5.mesto AS city, 
      o5.embg AS mb, 
      o5.serial_no AS ticket, 
      op.uplata AS uplata, 
      o5.pdd AS danok, 
      o5.isplata AS neto_dobivka, 
      op.iznos_isplaten AS bruto_dobivka 
    FROM o5
    INNER JOIN o1_payout_storno AS op ON op.serial_no = o5.serial_no 
    

    【讨论】:

    • 感谢您的回答,但在第二次选择中,我需要从 o5 中选择数据,我将尝试使用内部连接 ​​o1 从 o5 中进行选择,然后将所有来自 o5 的选择与内部连接 ​​o1_payout_storno 联合起来
    【解决方案2】:

    我终于得到了查询

    SELECT o5.id AS id, 
    DATE_FORMAT(o5.vreme_isplata, '%d.%m.%Y') AS payed_date, 
    o5.ime_prezime AS name, 
    o5.adresa AS address, 
    o5.mesto AS city,
    o5.embg AS mb, 
    o5.serial_no AS ticket, 
    o1.uplata AS uplata, 
    o5.pdd AS danok, 
    o5.isplata AS neto_dobivka, 
    o1.iznos_isplaten AS bruto_dobivka 
    FROM o5 
    INNER JOIN o1 ON o5.serial_no = o1.serial_no
    WHERE o1.transaction_type = 'I' 
    UNION ALL 
    SELECT o5.id AS id, 
    DATE_FORMAT(o5.vreme_isplata, '%d.%m.%Y') AS payed_date,
    o5.ime_prezime AS name, 
    o5.adresa AS address, 
    o5.mesto AS city, 
    o5.embg AS mb,
    o5.serial_no AS ticket, 
    o1_payout_storno.uplata AS uplata, 
    o5.pdd AS danok, 
    o5.isplata AS neto_dobivka,
    o1_payout_storno.iznos_isplaten AS bruto_dobivka 
    FROM o5 
    INNER JOIN o1_payout_storno ON o5.serial_no = o1_payout_storno.serial_no 
    WHERE o1_payout_storno.transaction_type = 'I' 
    ORDER BY payed_date ASC
    

    它按我的预期工作!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-30
      • 1970-01-01
      • 2015-05-08
      • 2019-07-04
      • 1970-01-01
      相关资源
      最近更新 更多