Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Prism ASP.NET und MySQL.NET auslesen eine Shopliste, einfacher? (https://www.delphipraxis.net/77153-asp-net-und-mysql-net-auslesen-eine-shopliste-einfacher.html)

Mavarik 15. Sep 2006 11:32


ASP.NET und MySQL.NET auslesen eine Shopliste, einfacher?
 
Hallo Zusammen!

Ich versuche mich krampfhaft in MySQL einzuarbeiten. :roll: Es soll folgende Liste erzeugt werden:

AUTOS (10)
LKWs (3)
Motorräder (3)


in der ASPX Datei steh:
Delphi-Quellcode:
 

<%#CatList()%></p>
Und mein QuellCode sieht so aus:
Delphi-Quellcode:
function TWebForm1.CatList:string;
Var
  Connection1,
  Connection2 : IDBConnection;
  command1,
  command2    : IDbCommand;
  reader1,
  reader2     : IDataReader;
  S          : String;
begin
  Connection1 := MySQLConnection.Create('server=localhost;uid=ich;pwd=wasauch;database=fahrzeuge');
  Connection2 := MySQLConnection.Create('server=localhost;uid=ich;pwd=wasauch;database=fahrzeuge');
   try
     Connection1.Open;
     Connection2.Open;
     command1 := connection1.CreateCommand();
     command2 := connection2.CreateCommand();
    try
     command1.CommandText := 'Select * from CatLookup where ID>1'; // 1=keine Auswahl

     reader1 := command1.ExecuteReader();
      try
        result := '';
        while reader1.Read() do
          begin
            S := reader1.GetString(1)+ ' (';
            command2.CommandText := 'Select COUNT(*) from Shop where Categorie='+reader1.GetString(0);
            reader2 := command2.ExecuteReader();
            try
            if reader2.Read then
              begin
                S := S + reader2.GetString(0)+')
';
                if reader2.GetInt32(0) > 0 then // Nur wenn Anzahl > 0 auch den Menuepunkt zeigen...
                  Result := result + S;
              end;
            finally
              reader2.Dispose();
            end;
          end;

      finally
        reader1.Dispose();
      end;

    finally
      command1.Dispose();
      command2.Dispose();
    end;

  finally
    Connection1.Close;
    Connection2.Close;
    connection1.Dispose();
    connection2.Dispose();
   end;
end;
Boh ist das aufwending. Geht das nicht einfacher? Werden bei MySQL wirklich 2 Connections benötigt?

Grüsse Frank :coder: :wall:

Phoenix 15. Sep 2006 11:45

Re: ASP.NET und MySQL.NET auslesen eine Shopliste, einfacher
 
Ähhhh...... mal ne ganz dumme Frage: Warum läufst Du in einer Tabelle durch und führst für jede Zeile ne eigene Abfrage durch?

Du kannst den COUNT(*) auf der anderen Tabelle doch in das erste Statement mit reinjoinen. Dann hast Du nur ein Statement dass die alle Daten liefert die Du brauchst.

Mavarik 15. Sep 2006 11:50

Re: ASP.NET und MySQL.NET auslesen eine Shopliste, einfacher
 
Hi!

Wie soll das den Aussehen?

Ich habe in der LookUp Tabelle die Texte der Artikelgruppen und in der Shop Tabelle "nur" das CatID. Wie kann ich jetzt in einer Abfrage den Text der einen Tabelle und das COUNT der anderen mit dem entsprechenden Filter erhalten?
Und wie soll das aussehen?

Frank :wiejetzt:

Mavarik 15. Sep 2006 12:25

Re: ASP.NET und MySQL.NET auslesen eine Shopliste, einfacher
 
OK

habe mit jetzt folgendes zusammengegoogled...

SELECT CatLookup.CatText, COUNT(*) FROM CatLookup JOIN Shop on(Shop.Categorie=CatLookUp.ID) GROUP BY CatLookUp.id

Aber wo ist der unterschied zu:

SELECT CatLookup.CatText, COUNT(*) FROM CatLookup LEFT JOIN Shop on(Shop.Categorie=CatLookUp.ID) GROUP BY CatLookUp.id


Danke... Frank :dp:

Phoenix 15. Sep 2006 12:36

Re: ASP.NET und MySQL.NET auslesen eine Shopliste, einfacher
 
Ein [b]LEFT[b] Join nimmt die Linke Tabelle als Master. Alle Daten, die zu den Links gefundenen Einträgen die Join-Bedingung erfüllen werden angezeigt. Auf der rechten Seite können ggf. NULL - Values auftreten.

Ein normaler Join verwendet keinen Master. Alle Daten, die zu den Links UND rechts gefundenen Einträgen die Join-Bedingung erfüllen werden angezeigt. Auch Werte, die nur rechts sind (dort wird links dann ein NULL-Eintrag erzeugt). Gleiches für die, dies nur links gibt - hier gibts rechts einen NULL.

Ein RIGHT Join ist das gleiche wie der Left nur auf der rechten Seite, will heissen rechts gibts keine NULL's links möglicherweise, aber die rechten Daten sind Ausschlaggebend für die Ergebnismenge.

Mavarik 15. Sep 2006 12:54

Re: ASP.NET und MySQL.NET auslesen eine Shopliste, einfacher
 
Alles Klar, Danke...


Frank :firejump:


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:24 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz