PHP, MYSQL: выбрать внутри цикла Loop?

0

Я прошу вашего совета по поводу следующего:

У меня две таблицы:

Клиенты и заказы.

Я печатаю данные клиентов внутри таблицы, используя цикл 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

но мне нужно иметь всех клиентов и тех, кто находится в обоих списках, отмеченных...

Это возможно? Если да: как я могу это достичь?

Спасибо за ваш совет!

С уважением,

Стефан

  • 1
    Обратите внимание, что функция mysql_* устарела. Взгляните на MySQLi или PDO .
Теги:
join

2 ответа

2

Это не имеет ничего общего с 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'

Изображение 174551 Изображение 174551

Узнайте больше о разных типах соединений: http://www.sql-join.com/sql-join-types/

(изображения предоставлены этим сайтом, в котором также содержится пример и обсуждение почти того, что вы пытаетесь сделать!)


Кстати, вы, должно быть, пропустили массивный красный предупреждающий баннер в руководстве об использовании устаревших (теперь удаленных) функций mysql_*. Вы должны прекратить это делать! Вместо этого используйте MySQLi или PDO.

  • 0
    Отлично! Спасибо большое! В настоящее время я работаю над обменом всего устаревшего синтаксиса ....
  • 0
    @Bosstone: Хорошие вещи. Веселиться!
Показать ещё 2 комментария
-3

более короткий

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)
  • 0
    Это неправильный тип соединения . Я приветствую краткость, хотя, даже если бы я никогда не бросил галочки в производственном коде.
  • 0
    Ошибка копирования вставки, использование обратных галочек, даже если это бесполезно, может быть выбором
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню