/ / PHP MySQL-запит, де дорівнює І рядок не існує - php, mysql

PHP MySQL query WHERE equals І рядки не існує - php, mysql

Я шукав і не можу знайти відповідь на те, що намагаюся зробити. Я не знаю, чи можна створити запит наступним чином.

$sql_call = "SELECT table.item,table.item,table.item FROM cust
LEFT JOIN contact ON cust.id = contact.client_id
LEFT JOIN survey_audit ON cust.id = survey_audit.cust_id
WHERE cust.clinic="$clinic_id" AND contact.participate="1" AND survey_audit.survey_id != "$post_survey_id"";

Вищенаведений запит не робить те, що я намагаюся зробити, і це:

Отримати дані з таблиць, де cust.clinic = щось І contact.participate = щось І (це частина, в якій я не впевнений) всередині таблиці Survey_audit, немає рядка з цим ідентифікатором.

Чи можна запитати sql, щоб знайти результат, де щось = щось І не є рядком у певній таблиці?

Відповіді:

1 для відповіді № 1

Ви начебто на правильному шляху. Вам просто потрібно шукати випадки, коли survey_audit.survey_id є NULL.

SELECT table.item,table.item,table.item
FROM cust
LEFT JOIN contact
ON cust.id = contact.client_id
LEFT JOIN survey_audit
ON cust.id = survey_audit.cust_id
WHERE cust.clinic="$clinic_id"
AND contact.participate="1"
AND survey_audit.survey_id IS NULL

Ось дуже корисний ресурс, який допоможе вам визначити, як формувати складніші сценарії приєднання. Ваш випадок є четвертим прикладом на цій сторінці.

http://blog.codinghorror.com/a-visual-explanation-of-sql-joins/


0 для відповіді № 2

Ви можете виключити всі елементи таблиці, використовуючи підзапит:

$sql_call = "SELECT table.item,table.item,table.item FROM cust
LEFT JOIN contact ON cust.id = contact.client_id
LEFT JOIN survey_audit ON cust.id = survey_audit.cust_id
WHERE cust.clinic="$clinic_id" AND contact.participate="1" AND survey_audit.survey_id NOT IN (SELECT survey_id FROM Survey_audit);

0 для відповіді № 3

Так, можливо, ви повинні прочитати більше про інші типи приєднань у mysql Є 4 типи приєднань

  1. INNER JOIN (ПРИЄДНАЙТЕСЬ) - відповідність ідентифікаторів в обох таблицях
  2. LEFT JOIN - збіг ідентифікатора в таблиці A і може бути нульовим у таблиці B
  3. RIGHT JOIN - збіг ідентифікатора в таблиці B і може бути нульовою таблицею A
  4. OUTER JOIN - може бути нульовим в обох таблицях

Рекомендую прочитати наступну статтю http://www.sitepoint.com/understanding-sql-joins-mysql-database/

Отже, для вашого питання я вважаю ви повинні використовувати RIGHT JOIN survey_audit замість LEFT JOIN survey_audit