Расширенный SQL SELECT - PullRequest
       13

Расширенный SQL SELECT

0 голосов
/ 02 августа 2009

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

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

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

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

Форма таблицы 3 имеет два поля выбора: одно, которое запрашивает tbl1, а другое - tbl2. Все идет нормально. Я комбинирую предметы из таблиц tbl1 и tbl2 в таблицы tbl3.

Тогда у меня следующая ситуация: когда пользователи выполняют таблицу tbl3, я хочу перезагрузить select2 (соответствующий данным из таблицы tbl2) после того, как пользователь выбрал элемент из таблицы tbl1. Для чего?

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

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

Я не могу представить себе SQL для запуска этого запроса, который получает элементы из таблицы tbl2. Я должен использовать выбранный элемент из таблицы tbl1 и каким-то образом взять оставшиеся элементы, которые не соответствуют махам. Возможен ли этот SQL-запрос? Я верю в это, но не могу придумать выход.

Ответы [ 2 ]

1 голос
/ 02 августа 2009

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

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

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

SQL Server:

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

Oracle:

SELECT t.id,
       t.value
  FROM TABLE2 t
  JOIN TABLE3 t3 ON t3.id != t.id AND t3.userid = :userId
0 голосов
/ 02 августа 2009

Я предполагаю, что в 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>)
   )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...