我有基本的表一和二。我们称他们为tbl1和tbl2。

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

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

然后有tbl3有外键将它链接到上面的两个表。

表3表单有两个选择字段:一个查询tbl1,另一个查询tbl2。到现在为止还挺好。我在tbl3中组合了来自tbl1和tbl2的项目。

然后我遇到以下情况:当用户满足tbl3时,我希望在用户从tbl1中选择一个项目之后重新加载select2(对应于来自tbl2的数据)。为什么?

让我们说第一次完成tbl3时,用户选择了<!>“; apple <!>”;来自tbl1和<!> quot; sofa <!> quot;来自tbl2。当用户选择<!>“; Apple <!>”时,第二个下拉列表会重新加载所有3个项目作为选项。

现在,用户第二次完成tbl3表单,如果用户选择<!>“apple <!>”;再次,他现在只有2个选项。苹果和沙发之前已被选中。选项现在只有<!> quot; table <!> quot;和<!>“;主席<!>”;如果他选择<!>“苹果<!>”;和<!> quot; table <!> quot;现在,第一个项目的剩余选项<!>“apple <!>”;将是<!>“;主席<!>”;等等...

我想不出一个SQL来运行这个从tbl2抓取元素的查询。我必须使用tbl1中的选定元素并以某种方式获取REMAINING项目,那些与马赫不对应的项目。这个SQL查询是否可以?我相信,但想不出办法。

有帮助吗?

解决方案

我猜测table3有列:

用户,Tbl1-ID,Tbl2-ID

我猜测,对于用户X,你想要tbl2的值,这些值是基于tbl1的selecton而不是表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 Server:

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