我请求您就以下问题提出建议:
我有两个表:
客户和订单。
我正在使用 while 循环打印表内的客户数据:
$sql = "SELECT * FROM wccrm_customers where status = '1' order by date desc";
$result = mysql_query($sql, $db);
while ($daten = mysql_fetch_array($result)) { ?>
echo $daten[id];
echo $daten[name] . ' ' . $daten[vorname];
echo $daten[email];
echo $daten[telefon];
} ?>
现在我尝试在此列表中添加一个新字段:购买是/否。由于我们的客户多于买家,我们希望显示是否有人购买:
这两个表之间的连接是两个表中的名字/姓氏!
因此,如果 customer.name =orders.name 并且 customer.firstname =orders.firstname 我想回显“YES”,如果不是则“NO”
我尝试使用 JOIN,但在这里我只得到两个表中的结果:
SELECT *
FROM wccrm_customers AS k
INNER JOIN wccrm_orders AS o
ON o.namee = k.name AND o.firstname = k.firstname
但我需要标记所有客户以及两个列表中的客户...
这可能吗?如果是:我怎样才能实现这一目标?
感谢您的建议!
亲切的问候,
斯特凡
最佳答案
这与 PHP 或 while 循环无关;你只需要正确地形成你的连接:
SELECT DISTINCT
`k`.*,
`o`.`namee` IS NOT NULL AS `Purchased`
FROM `wccrm_customers` AS `k`
LEFT JOIN `wccrm_orders` AS `o`
ON
`o`.`namee` = `k`.`name`
AND `o`.`firstname` = `k`.`firstname`
了解有关不同连接类型的更多信息:http://www.sql-join.com/sql-join-types/
(图片由该网站提供,其中还包含几乎完全符合您想要做的事情的示例和讨论!)
<小时/>顺便说一句,你一定错过了 massive red warning banner在有关使用已弃用(现已删除)mysql_*
函数的手册中。你应该停止这样做!使用MySQLi或PDO相反。
关于PHP、MySQL : Select inside a while Loop?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48973093/