2017-09-21 1 views
-6

i essayé requête, mais pas avoir de réponse de recherche, j'ai deux tablesrequête SQL entre deux tables

table 1

enter image description here

je veux concevoir une requête dans LINQ obtenir toutes les données qui ont inscrire dans le tableau 2 avec la valeur dans le champ numéro 1 et la valeur 3 et la valeur 4, dans cet exemple, je reçois des données de la table 1

enter image description here

merci pour vous collaboration

+0

pourquoi les votes négatifs? –

Répondre

0

en utilisant la sous requête

select * from table_1 où id dans (sélectionner idtable1 de table_2 où nombre dans (1,3,4))

par des joints select * from serait table_1 t1 t2 joindre table_2 sur t1.id = t2.idtable1 où t2.number en (1,3,4)

0

select id,idTable1,number 
     from 
     table2 
where idTable1 = 1 

si je comprends bien la question. Votre question est un peu difficile à saisir. SI il doit y avoir une jointure dans son

select b.id,a.Idtable1,a.number 
    from table1 b ,table2 a 
    where b.id = a.Idtable1 
0

Si je ne me trompe pas sur ce que vous voulez, cela pourrait fonctionner. Vous devez joindre les tables à, puis vérifier la condition que vous souhaitez utiliser où.

SELECT a.id, a.value 
FROM TABLE1 a 
INNER JOIN TABLE2 b on a.id=b.idTable1 
WHERE b.number in (1,3,4) 
AND a.id = 1; 
+0

merci pour votre réponse, mais il est faux parce que avec la phrase "dans", je reçois des données seulement pour répondre à une condition, je veux obtenir le registre qui a le numéro 1 et d'autres inscrire dans le numéro 3 avec la phrase "union" pourrait travailler –

0

Cette première requête suppose que table2.number est unique pour un ID donné. Cela pourrait ne pas être vrai. Si elle est:

select table1.id, table1.value 
from table1 
join table2 
    on table1.id = table2.idTable1 
group by table1.id, table1.value 
having count(*) = 3 
where table2.number in (1,3,4) 

Si pourrait être une valeur de répétition « nombre » (n'est pas unique pour chaque idTable1), alors nous devons nous assurer que nous nous associons à des valeurs distinctes dans table2:

select table1.id, table1.value 
from table1 
join (select distinct table2.idTable1, table2.number where table2.number in (1,3,4)) t2 
    on table1.id = t2.idTable1 
group by table1.id, table1.value 
having count(*) = 3 
1

Voilà comment je vais à ce sujet - je l'ai écrit dans SQL parce que je suis bien mieux à ce que je suis à LINQ, mais la conversion de l'un à l'autre devrait être simple:

select 
    t1.id 
    , t1.value 
from table1 as t1 
    inner join table2 as t21 
     on t21.idTable1 = t1.id 
     and t21.number = 1 
    inner join table2 as t23 
     on t23.idTable1 = t1.id 
     and t23.number = 3 
    inner join table2 as t24 
     on t24.idTable1 = t1.id 
     and t24.number = 4 

Ce joint à un sous-ensemble du tableau 2 trois fois, une fois f ou chaque valeur que vous voulez. L'utilisation de "jointure interne" rend la logique équivalente à un AND.