Найти таблицу несоответствующей записи 2 с применением условия where и отображением записи из 1 таблицы

#sql #sql-server #database #sql-server-2008

#sql #sql-сервер #База данных #sql-server-2008

Вопрос:

таблица классов

  • переменная class_code(50)
  • параметр синхронизации (50)
  • параметр emp_id(50)

таблица employee

  • i_id int
  • параметр emp_id(20)
  • имя переменной(50)

    1. У нас есть 2 таблицы, 1 из которых — employee, а другая — class
    2. у нас есть 4 записи в таблице employee, где emp_id =как-1, как-2, как-3, как-4
    3. у нас есть 2 записи в class table с emp_id = как-1 или как-3 и timing = ‘3-4’

Мы выбираем те записи из таблицы employee, которые доступны / свободны при timing = ‘3-4’, например, как-2 или как-3, потому что as-1 или as-3 уже находятся в таблице классов при timing в 3-4

Комментарии:

1. Какая СУБД у вас mysql или SQL-Server. Пожалуйста, удалите неправильные теги!

2. почему emp_id имеет значение varchar (20) в одной таблице, но varchar(50) в другой

3. я использую SQL SERVER 2008 и emp_id varchar (20) для обеих таблиц

4. у нас есть 3 сотрудника, и их emp_id равен e-1, e-2, e-3 в таблице employee хорошо, теперь e-1, e-2 обрабатываются в 3-4, а e-3 свободны, их запись в таблице class теперь мы выбираем запись сотрудника с условием, где timing = 3-4, но я хочу, чтобы запись, которая свободна в 3-4, была похожа на e-3

Ответ №1:

Вы многого нам не рассказали, и указанные данные могут быть не совсем репрезентативными. Оба они вернут employee 2 и 4 (и оба будут работать в MySQL или MSsql):

 SELECT
      e.*
FROM employee e
      LEFT JOIN class c
            ON e.emp_id = c.emp_id
WHERE (c.timing <> '3-4'
      OR c.timing IS NULL)
;

SELECT
      *
FROM employee
WHERE NOT EXISTS (
            SELECT 1
            FROM class
            WHERE timing = '3-4'
                  AND class.emp_id = employee.emp_id
      )
;
  

смотрите этот sqlfiddle (MySQL)

Комментарии:

1. Пример: у нас есть 3 сотрудника, и их emp_id равен e-1, e-2, e-3 в таблице employee хорошо, теперь e-1, e-2 обрабатываются в 3-4, а e-3 свободны, их запись в таблице class теперь мы выбираем запись employee с условием, где timing = 3-4, но я хочу, чтобы запись, которая свободна в 3-4, была похожа на e-3