MySQL Statement не возвращается как ожидалось - PullRequest
0 голосов
/ 17 апреля 2011

У меня есть 3 таблицы:

  1. ПОСТАВЩИКИ: идентификатор, имя, адрес, пригород, штат, телефон, электронная почта, удалено

  2. КЛИЕНТЫ: идентификатор, имя, адрес, пригород, штат, телефон, электронная почта, удалено

  3. ACCREDITED_SUPPLIERS: id, идентификатор_поставщика, идентификатор_пользователя

Я хочу отобразить все ПОСТАВЩИКИ и пометить те, которые уже связаны в ACCREDITED_SUPPLIERS ...

Вот мое утверждение:

SELECT SQL_CALC_FOUND_ROWS s.id, s.name, s.suburb, s.state, s.phone, s.email, s.deleted, 
IF( ac.customer_id =  '220', 1, 0 ) AS accredited
FROM suppliers s 
LEFT OUTER JOIN accredited_suppliers ac ON ac.supplier_id = s.id 
WHERE s.deleted='0'  
ORDER BY s.name

Этот оператор возвращает только 10 строк с тегами

Почему-то по непонятным причинам пропущено 3 строки!

SELECT * 
FROM  `accredited_suppliers` 
WHERE  `customer_id` =  '220'

ВОЗВРАЩЕНИЕ: 13 рядов

Правильно ли мое утверждение выше? Я правильно его выдаю?

1 Ответ

1 голос
/ 17 апреля 2011

Разве вы просто не хотите:

select
  s.id AS supplier_id,
  IF(a.supplier_id IS NULL, 0, 1) AS accredited
from
  SUPPLIERS s
    left join
      ACCREDITED_SUPPLIERS a
    ON
      s.id = a.supplier_id AND
      a.customer_id = 220;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...