J'ai une table principale qui a l'information commune de deux tables. J'ai aussi deux tables qui ont l'information particulière de chaque type. Enfin, j'ai une dernière table qui a une relation avec l'une de ces deux tables secondaires. Il est possible que cette dernière table ait une relation avec une ou les deux tables secondaires.comment faire une union ou "ou" dans ce cas?
Le modèle est:
- maintable (IDMainTable, nom ...)
- Secondary01 (IDSecondary01, IDMaintable, nom ....)
- Secondary02 (IDSecondary02, IDMainTable Nom ... .)
- données (IDData, nom ...)
- DataRelationship (IDData, IDSecondary01, IDSecondary02)
Je voudrais obtenir tous les registres dans la table principale que l'une des tables secondaires a une relation avec une donnée. J'ai l'IDData comme condition.
Dans SQL, il serait quelque chose comme ça:
select * from Maintable, Secondary01, DataRelationship
where MainTable.IDMainTable = Secondary01.IDMainTable
and Secondary01.IDSecondary01 = DataRelationship.IDSecondary01
and DataRelationship.IDData = 1234
UNION
select * from Maintable, Secondary02, DataRelationship
where MainTable.IDMainTable = Secondary02.IDMainTable
and Secondary02.IDSecondary02 = DataRelationship.IDSecondary02
and DataRelationship.IDData = 1234
Comment puis-je faire cette requête avec des méthodes étendues ou à des entités LINQ?
Merci.
et ainsi faire une ou deux requêtes à la base de données? Je voudrais accéder une fois à la base de données. –
@ ÁlvaroGarcía, ne pas itérer la requête, il suffit de former votre requête en utilisant 'Union' et en itérant, il devrait aller à la base de données une fois. – Habib
@ ÁlvaroGarcía, vient d'ajouter un extrait de code pour décrire ce que je voulais dire. – Habib