在PHP中连接3个表以生成一个数组
我在mySQL中遇到了一个查询问题 实际上,我的mySQL查询如下所示:在PHP中连接3个表以生成一个数组,php,mysql,arrays,Php,Mysql,Arrays,我在mySQL中遇到了一个查询问题 实际上,我的mySQL查询如下所示: $contact = array ( "client" => array("KDX_Id" => 44, "KDX_Name" => "Luka"), "company" => array("KDX_Id" => 46, "KDX_Company" => "Google"), "billing" => array() // Noting here be
$contact = array (
"client" => array("KDX_Id" => 44, "KDX_Name" => "Luka"),
"company" => array("KDX_Id" => 46, "KDX_Company" => "Google"),
"billing" => array() // Noting here because no billing contact was link
);
\u发票
表格
|--------|---------------|
| IVC_Id | IVC_BookingId |
|--------|---------------|
| 1 | 99 |
|--------|---------------|
|--------|--------------|---------------|---------------|
| BOO_Id | BOO_ClientId | BOO_CompanyId | BOO_BillingId |
|--------|--------------|---------------|---------------|
| 99 | 44 | 46 | 0 |
|--------|--------------|---------------|---------------|
|--------|----------|----------|-------------|
| KDX_Id | KDX_Type | KDX_Name | KDX_Company |
|--------|----------|----------|-------------|
| 44 | client | Luka | |
| 46 | company | | Google |
| 78 | billing | Georgia | |
|--------|----------|----------|-------------|
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
|--------|---------------|
| IVC_Id | IVC_BookingId |
|--------|---------------|
| 1 | 99 |
|--------|---------------|
|--------|--------------|---------------|---------------|
| BOO_Id | BOO_ClientId | BOO_CompanyId | BOO_BillingId |
|--------|--------------|---------------|---------------|
| 99 | 44 | 46 | 0 |
|--------|--------------|---------------|---------------|
|--------|----------|----------|-------------|
| KDX_Id | KDX_Type | KDX_Name | KDX_Company |
|--------|----------|----------|-------------|
| 44 | client | Luka | |
| 46 | company | | Google |
| 78 | billing | Georgia | |
|--------|----------|----------|-------------|
\uuu Kardex
表格
|--------|---------------|
| IVC_Id | IVC_BookingId |
|--------|---------------|
| 1 | 99 |
|--------|---------------|
|--------|--------------|---------------|---------------|
| BOO_Id | BOO_ClientId | BOO_CompanyId | BOO_BillingId |
|--------|--------------|---------------|---------------|
| 99 | 44 | 46 | 0 |
|--------|--------------|---------------|---------------|
|--------|----------|----------|-------------|
| KDX_Id | KDX_Type | KDX_Name | KDX_Company |
|--------|----------|----------|-------------|
| 44 | client | Luka | |
| 46 | company | | Google |
| 78 | billing | Georgia | |
|--------|----------|----------|-------------|
如何链接这3个表?
我在决赛中需要的是这样一个数组:
$contact = array (
"client" => array("KDX_Id" => 44, "KDX_Name" => "Luka"),
"company" => array("KDX_Id" => 46, "KDX_Company" => "Google"),
"billing" => array() // Noting here because no billing contact was link
);
我从查询开始:
SELECT *
FROM ___Invoices
JOIN ___Bookings
ON ___Invoices.IVC_BookingId=___Bookings.BOO_Id
JOIN ___Kardex
ON ___Bookings.BOO_ClientId =___Kardex.KDX_Id
OR ___Bookings.BOO_CompanyId =___Kardex.KDX_Id
OR ___Bookings.BOO_CompanyId =___Kardex.KDX_Id
WHERE IVC_Id=1
但它不起作用
请问有什么帮助吗
谢谢。使用联合操作。只有当所有3个查询返回相同数量的结果时,这才有效。像这样:
SELECT KDX_Id, KDX_Type, KDX_Name FROM (
(SELECT K.KDX_Id, K.KDX_Type, K.KDX_Name, B.BOO_Id
FROM ___Kardex AS K
JOIN ___Bookings AS B ON K.KDX_Id = B.BOO_ClientId)
UNION
(SELECT K.KDX_Id, K.KDX_Type, K.KDX_Company, B.BOO_Id
FROM ___Kardex AS K
JOIN ___Bookings AS B ON K.KDX_Id = B.BOO_CompanyId)
UNION
(SELECT K.KDX_Id, K.KDX_Type, K.KDX_Name, B.BOO_Id
FROM ___Kardex AS K
JOIN ___Bookings AS B ON K.KDX_Id = B.BOO_BillingId) ) AS TEMP
JOIN ___Invoices AS I ON I.IVC_BookingId = TEMP.BOO_ID
WHERE I.IVC_Id = 1
结果将类似于:
ID TYPE NAME (or company)
44 client Luka
46 company Google
然后在PHP代码中,循环结果的每一行,并使用类型(第二列)填充数组
$contacts = array($results[1] => array($results[0] => $results[1]));
注意:我测试了查询,而不是PHP,但您知道了
编辑说明:联合的结果现在定义为临时。然后将TEMP连接到表uuuu Invoices,以允许选择要筛选的发票。只是添加了其中IVC_uid=1
部分。“不工作”并没有告诉我们太多。您是否遇到错误?您使用什么php代码将返回的行格式化为首选的php格式?至少有一个问题是,当您多次加入同一个表时,在php中选择列名时,最后一行的值将覆盖前面的行。您需要使用别名来防止这种情况。我没有任何错误。查询工作正常,但我无法获得所需的输出。您好,谢谢您的回复。是否可能遗漏了选择我的发票的WHERE
部分?