Я прошу вашего совета по поводу следующего:
У меня две таблицы:
Клиенты и заказы.
Я печатаю данные клиентов внутри таблицы, используя цикл 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 или с циклами; вам просто нужно правильно сформировать свое соединение:
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/
(изображения предоставлены этим сайтом, в котором также содержится пример и обсуждение почти того, что вы пытаетесь сделать!)
Кстати, вы, должно быть, пропустили массивный красный предупреждающий баннер в руководстве об использовании устаревших (теперь удаленных) функций mysql_*
. Вы должны прекратить это делать! Вместо этого используйте MySQLi или PDO.
более короткий
SELECT DISTINCT k.*, IF(o.namee IS NULL, 'no', 'yes') purchased
FROM
wccrm_customers AS k
LEFT JOIN wccrm_orders AS o USING (namee,firstname)
mysql_*
устарела. Взгляните на MySQLi или PDO .