Php 结合mysql中的两个结果集

Php 结合mysql中的两个结果集,php,mysql,Php,Mysql,所以我知道这个网站上有很多关于这个话题的帖子,我能找到的最接近的一个类似的帖子是: 我正在从事一个涉及“应收账款”和“应付账款”的项目,但这两个项目都需要单一列表中的数据: date | description | reference | debit | credit 我已经了解到mySQL UNION语句用于将两个结果集合并为一个,但是,根据以下网站,两个结果集的列计数和类型似乎必须匹配: 我面临的问题是,两个结果集的列计数不同,因为其中一个结果集的信息与另一个结果集的信息没有直接关联(

所以我知道这个网站上有很多关于这个话题的帖子,我能找到的最接近的一个类似的帖子是:

我正在从事一个涉及“应收账款”和“应付账款”的项目,但这两个项目都需要单一列表中的数据:

date | description | reference | debit | credit
我已经了解到mySQL UNION语句用于将两个结果集合并为一个,但是,根据以下网站,两个结果集的列计数和类型似乎必须匹配:

我面临的问题是,两个结果集的列计数不同,因为其中一个结果集的信息与另一个结果集的信息没有直接关联(这将排除UNION语句的使用)。从两个表中获取数据并根据日期进行排序的最佳做法是什么?我将在下面包括我的SQL调用作为参考:

应收账款:

SELECT tblARP.*,tblAR.invoiceID,tblAR.ledgerID
FROM Accounting_ReceivablesPayments tblARP
INNER JOIN Accounting_Receivables tblAR ON tblARP.invoiceID = tblAR.invoiceID
ORDER BY deposited
应付账款:

SELECT tblAPP.*,tblAP.id,tblAP.ledgerID,tblAP.tblName,tblAP.rowID,tblAP.invoice
FROM Accounting_PayablesPayments tblAPP
INNER JOIN Accounting_Payables tblAP ON tblAPP.payablesID = tblAP.id
ORDER BY deposited
更新

根据注释中的请求,以下是表的列:

应收账款的会计处理

id BIGINT PRIMARY KEY NOT NULL AUTO_INCREMENT UNIQUE,
invoiceID BIGINT NOT NULL,
amount DECIMAL(9,2) NOT NULL DEFAULT '1.00',
ledgerID BIGINT NOT NULL,
note TEXT
会计及应收款项

id BIGINT PRIMARY KEY NOT NULL AUTO_INCREMENT UNIQUE,
invoiceID BIGINT NOT NULL,
received DATE NOT NULL,
type VARCHAR(10) NOT NULL,
amount DECIMAL(9,2) NOT NULL DEFAULT '1.00',
deposited DATE,
tag VARCHAR(32) NOT NULL
id BIGINT PRIMARY KEY NOT NULL AUTO_INCREMENT UNIQUE,
payablesID BIGINT NOT NULL,
created DATE NOT NULL,
type VARCHAR(10) NOT NULL,
amount DECIMAL(9,2) NOT NULL DEFAULT '1.00',
deposited DATE,
tag VARCHAR(32) NOT NULL
应付账款会计

id BIGINT PRIMARY KEY NOT NULL AUTO_INCREMENT UNIQUE,
paid TINYINT(1) UNSIGNED NOT NULL DEFAULT '0',
invoice BIGINT NOT NULL,
amount DECIMAL(9,2) NOT NULL DEFAULT '1.00',
terms VARCHAR(3) NOT NULL DEFAULT 'net',
due DATE,
tblName VARCHAR(48) NOT NULL,
rowID BIGINT NOT NULL,
ledgerID BIGINT NOT NULL,
note TEXT
应付账款会计

id BIGINT PRIMARY KEY NOT NULL AUTO_INCREMENT UNIQUE,
invoiceID BIGINT NOT NULL,
received DATE NOT NULL,
type VARCHAR(10) NOT NULL,
amount DECIMAL(9,2) NOT NULL DEFAULT '1.00',
deposited DATE,
tag VARCHAR(32) NOT NULL
id BIGINT PRIMARY KEY NOT NULL AUTO_INCREMENT UNIQUE,
payablesID BIGINT NOT NULL,
created DATE NOT NULL,
type VARCHAR(10) NOT NULL,
amount DECIMAL(9,2) NOT NULL DEFAULT '1.00',
deposited DATE,
tag VARCHAR(32) NOT NULL

对于我在评论中所说的,你应该这样做

(   SELECT 
        tblARP.*,
        tblAR.invoiceID,
        tblAR.ledgerID,
        NULL, -- # -- null values for your rows to match columns
        NULL,
        NULL
    FROM `Accounting_ReceivablesPayments` tblARP
    INNER JOIN `Accounting_Receivables` tblAR ON tblARP.invoiceID = tblAR.invoiceID
    ORDER BY deposited
)

UNION ALL -- # -- union all to include everything

(   SELECT 
        tblAPP.*,
        tblAP.id,
        tblAP.ledgerID,
        tblAP.tblName,
        tblAP.rowID,
        tblAP.invoice
    FROM `Accounting_PayablesPayments` tblAPP
    INNER JOIN `Accounting_Payables` tblAP ON tblAPP.payablesID = tblAP.id
    ORDER BY deposited
)

show ur tables data too如果要将两个数据集排序在一起,则联合是最好的方法。是否有可以显示的公共字段?我假设一个参考,一个id,一个金额对两者都是通用的。你们能创建一个匹配的数据联合吗?如何显示?使列与相关列匹配。。。如果它们不相关,则使用别名
tbl.column作为new\u column
为它们创建不同的列,并使用联合。这两个表之间是否有任何相关数据?像发票号之类的吗?@Hammerstein这两个表之间有几个共同的字段,但我需要从一个表中提取更多的字段来填写列表(date | desc | ref |等)。如果我只使用两个表之间的公共字段,我将如何获得附加信息?谢谢John,明天早上第一件事就是检查这个!John看起来我可以使用您的UNION语句来收集所有记录,但是,我正在尝试测试列名,以便能够识别来自每个表的记录“if(isset($results['invoiceID']){…}”,但这似乎不起作用。我在想如何分辨哪个记录来自哪个表?没关系,我在这里找到了解决办法