Вопрос

У меня есть базовые таблицы один и два.Назовем их tbl1 и tbl2.

tbl1
---------
1 - apple |
2 - orange |
3 - banana |
4 - pineapple

tbl2
---------
1 - table |
2 - chair |
3 - sofa |

Затем есть таблица tbl3, имеющая внешние ключи, связывающие ее с обеими таблицами выше.

Форма Таблица 3 имеет два поля выбора:тот, который запрашивает таблицу tbl1, и другой, который запрашивает таблицу2.Все идет нормально.Я объединяю элементы из таблицы 1 и таблицы 2 в таблицу 3.

Тогда у меня следующая ситуация:Когда пользователи выполняют таблицу 3, я хочу, чтобы select2 (соответствующий данным из таблицы 2) перезагружался после того, как пользователь выбрал элемент из таблицы 1.Зачем?

Допустим, впервые выполняя таблицу3, пользователь выбрал «яблоко» из таблицы1 и «диван» из таблицы2.Когда пользователь выбирал «яблоко», второй раскрывающийся список перезагружался со всеми тремя элементами в качестве опций.

Теперь, когда пользователь во второй раз заполняет форму tbl3, если пользователь снова выберет «яблоко», у него теперь будет только 2 варианта.яблоко И диван были выбраны раньше.Вариантами теперь являются только «стол» и «стул».Если он сейчас выберет «яблоко» и «стол», оставшимся вариантом для первого предмета «яблоко» будет «стул».И так далее...

Я не могу придумать SQL для запуска этого запроса, который извлекает элементы из таблицы tbl2.Я должен использовать выбранный элемент из таблицы1 и каким-то образом захватить ОСТАЛЬНЫЕ элементы, те, которые не соответствуют мачу.Возможен ли этот SQL-запрос?Я так думаю, но не могу придумать выхода.

Это было полезно?

Решение

Я предполагаю, что в table3 есть столбцы:

Пользователь, Tbl1-ID, Tbl2-ID

Я предполагаю, что для пользователя X вам нужны значения для tbl2, основанные на выборе из tbl1, которого нет в таблице 3.

SELECT ID, Value
FROM tbl2
WHERE tbl2.ID NOT IN (
   SELECT Tbl2-ID
   FROM Table3
   WHERE (User = <this user>) AND (Tbl1-ID = <selected tbl1 ID>)
   )

Другие советы

Если ссылки предназначены для каждого пользователя:

SELECT t.id,
       t.value
  FROM TABLE2 t
  JOIN TABLE3 t3 ON t3.id != t.id

Если ссылки являются рассчитаны на каждого пользователя для:

SQL-сервер:

SELECT t.id,
       t.value
  FROM TABLE2 t
  JOIN TABLE3 t3 ON t3.id != t.id AND t3.userid = @userId

Оракул:

SELECT t.id,
       t.value
  FROM TABLE2 t
  JOIN TABLE3 t3 ON t3.id != t.id AND t3.userid = :userId
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top