mysql join in c#

Status
Niet open voor verdere reacties.

janbe63

Gebruiker
Lid geworden
21 okt 2007
Berichten
64
Ik heb via een mysql een dataset, welke ik kan laten zien in een datagridview1.

Code:
             myadp = new MySqlDataAdapter("select product_code code, 
                                                                        products_quantity hoeveelheid,
                                                                        products_name naam 
                                                                        from products T1  
                                                                        INNER JOIN 
                                                                                products_description T2 
                                                                        ON 
                                                                               T1.products_id=T2.products_id", conn);
            myds = new DataSet();
            myadp.Fill(myds, "table1");
            bindingSource1.DataSource = myds.Tables["table1"];

            dataGridView1.DataSource = bindingSource1;

en inderdaad geeft dit een mooie tabel te zien

ook heb ik een tweede tabel:

Code:
            myadp1 = new MySqlDataAdapter1("select product_code code, 
                                                                           products_location locatie
                                                                  from products2", conn1);
            myds1 = new DataSet();
            myadp1.Fill(myds, "table2");
            bindingSource1.DataSource = myds.Tables["table2"];

            dataGridView2.DataSource = bindingSource1;

en ook tabel 2 is er en te zien in dataGridView2

Wat ik nu wil is:

[sql]Select table1.code code
hoeveelheid
naam
locatie
from table1 T1
inner join table2 T2
on T1.code=T2.code[/sql]

Ik zou dit willen uitvoeren op de "gemaakte" tabellen en deze dan uiteraard weer laten zien in een datagridview.

Nu zou het met deze tabellen wel gaat met een dubbele join, maar wat als de query's ingewikkelder worden (of zelfs uit verschillende databases komen).
 
Laatst bewerkt door een moderator:
Wat is nu de vraag? Of er limieten zijn aan deze aanpak? Hoe je het aan moet pakken? Eventueel andere methoden?

In principe kun je het ineens doen met subselects op je database, geen noodzaak eerst andere tabellen te vullen
 
De vraag is hoe ik de 2 tabellen dus kan joinen, en hoe ik deze dan vervolgens kan weergeven in een datagridview.
Het is misschien geen noodzaak om eerst andere tabellen te vullen, maar het maakt het wel overzichtelijk in de stappen.
 
U kunt in 1 query gewoon meerdere tabellen met elkaar joinen. Dan krijgt u het gewenste resultaat.

[SQL]SELECT TableA.*, TableB.*, TableC.*, TableD.*
FROM TableA
JOIN TableB
ON TableB.aID = TableA.aID
JOIN TableC
ON TableC.cID = TableB.cID
JOIN TableD
ON TableD.dID = TableA.dID[/SQL]
 
U kunt in 1 query gewoon meerdere tabellen met elkaar joinen. Dan krijgt u het gewenste resultaat.

[SQL]SELECT TableA.*, TableB.*, TableC.*, TableD.*
FROM TableA
JOIN TableB
ON TableB.aID = TableA.aID
JOIN TableC
ON TableC.cID = TableB.cID
JOIN TableD
ON TableD.dID = TableA.dID[/SQL]

Dat begrijp ik en ik begrijp ook dat ik zo andere SQL-statments kan uitvoeren.
De vraag is hoe ik hier dus een nieuwe dataset van kan maken welke ik kan weergeven in een DataGridView.

Misschien kan iemand een stukje voorbeeldcode maken?
 
U heeft de code zelf al gegeven:

Code:
 myadp = new MySqlDataAdapter("
SELECT TableA.*, TableB.*, TableC.*, TableD.*
FROM TableA
    JOIN TableB
        ON TableB.aID = TableA.aID
    JOIN TableC
        ON TableC.cID = TableB.cID
    JOIN TableD
        ON TableD.dID = TableA.dID

", conn);
            myds = new DataSet();
            myadp.Fill(myds, "table1");
            bindingSource1.DataSource = myds.Tables["table1"];

            dataGridView1.DataSource = bindingSource1;
 
Blijkbaar komt de vraag niet helemaal goed over.

Ik heb dus query1, deze wordt uitgevoerd. Hieruit komt een dataset myds en die vult uiteindelijk tabel1.
Ik heb query2, ook deze wordt uitgevoerd. Hieruit komt een dataset myds1 en die vult tabel2.
Beide datasets hebben het veld product_id (naast andere velden uiteraard).
Nu wil ik beide datasets joinen, zonder dat er nog een connectie open is. (en deze daarna weergeven in een dataGridView).
 
Dus als ik het goed begrijp wilt u lastig gaan doen met c# om 1 extra query te voorkomen?
Wat moet dat als nut hebben? Want in de meeste gevallen is een 3rde query veel sneller.

Mij lijkt het veel gemakkelijker de 3rde query uit te voeren en dan die te filteren op de resultaten die u wilt hebben.
 
Ik heb de vraag even verplaatst van C / C++ naar C#.net :)
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan