Announcement

Collapse
No announcement yet.

Ist es möglich in VB.NET eine Kreuztabellenabfrage zu machen?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Ist es möglich in VB.NET eine Kreuztabellenabfrage zu machen?

    Hallo zusammen,

    ich hoffe, dass es jemanden gibt, der mir helfen kann.

    Ich möchte unter VB.NET eine Kreuztabellenabfrage auf eine andere Abfrage machen.
    Allerdings bekomme ich dort immer einen Syntaxfehler.
    Grund dafür ist wohl, dass man in einem View keine Kreuztabellenfrage machen kann.

    Daher wollte ich fragen, ob sich jemand von euch damit auskennt und wie man das machen kann?
    Oder ob es eine andere Möglichkeit gibt dies zu tun?

    MfG
    Frank

  • #2
    irgendwas mit LINQ ... Join ...etc.
    Code:
    Public Sub LinqToSqlJoin01()
        Dim q = From c In db.Customers, o In c.Orders _
                Where c.City = "London" _
                Select o
    
        ObjectDumper.Write(q)
    End Sub
    ' oder
    Public Sub LinqToSqlJoin06()
        Dim q = From c In db.Customers _
                Group Join o In db.Orders On c.CustomerID Equals o.CustomerID Into ords = Group _
                Group Join e In db.Employees On c.City Equals e.City Into emps = Group _
                Select New With {c.ContactName, .ords = ords.Count(), .emps = emps.Count()}
    
        ObjectDumper.Write(q)
    End Sub
    Zuletzt editiert von Fremder; 17.03.2010, 19:08.
    Vor 4,5 Millionen Jahren lernten ~wir~ aufrecht zu gehen!
    Um heute vorm PC zu sitzen!

    Comment


    • #3
      Ich möchte unter VB.NET eine Kreuztabellenabfrage auf eine andere Abfrage machen.
      In welcher Technik und auf welche Daten? ADO.Net, LINQ to <irgendwas>, EntityFramework etc.

      Comment


      • #4
        access ? oder so ?

        dann sollte

        CREATE PROCEDURE statt CREATE VIEW funktionieren
        Vor 4,5 Millionen Jahren lernten ~wir~ aufrecht zu gehen!
        Um heute vorm PC zu sitzen!

        Comment


        • #5
          Erstmal vielen Dank für die schnellen Antworten.
          Ich benutze VS2008 und greife damit auf SQL Sever 2008 zu.

          Ich habe mir dort 3 Tabellen erstellt um eine N-zu-M-Beziehung zu haben.
          Also Tabelle Mitarbeiter mit M_ID und Nachname,
          eine Tabelle Projeke mit P_ID und Projektname,
          und als drittes eine Verbindungstabelle mit M_ID und P_ID, Monat und Stunden.

          Auf diese Verbindungstabelle und Tabelle Projekte dann eine Abfrage:
          Code:
          SELECT verbindung.M_ID, projekte.Projektname, verbindung.Stunden, verbindung.Monat
          FROM projekte INNER JOIN verbindung ON projekte.P_ID=verbindung.P_ID;
          Ergebnis:
          M_ID Projektname Stunden Monat
          --1----Projekt AAA-----40------FEB
          --1----Projekt AAA-----60------JAN
          --1----Projekt BBB----120-----FEB
          --1----Projekt BBB----100-----JAN
          --2----Projekt AAA-----80------FEB
          --2----Projekt AAA-----70------JAN
          --2----Projekt BBB-----80------FEB
          --2----Projekt BBB-----90------JAN

          Darauf möchte ich jetzt eine Kreuztabellenabfrage machen.
          Dies habe ich probiert mit:
          Code:
          TRANSFORM Sum(Abfrage1.Stunden) AS SummevonStunden
          SELECT Abfrage1.M_ID, Abfrage1.Projektname, Sum(Abfrage1.Stunden) AS [Gesamtsumme von Stunden]
          FROM Abfrage1
          GROUP BY Abfrage1.M_ID, Abfrage1.Projektname
          PIVOT Abfrage1.Monat In ("JAN","FEB","MÄR","APR");

          M_ID-------Projektname---Gesamtsumme von Stunden--JAN---FEB--MÄR--APR
          --1----------Projekt AAA-----------------------100------------60---40
          --1----------Projekt BBB-----------------------220-----------100--120
          --2----------Projekt AAA-----------------------150------------70---80
          --2----------Projekt BBB-----------------------170------------90---80

          Das Problem was ich nun habe ist, dass es nicht funktioniert.
          Unter Access klappt es. Ich habe gelesen, dass eine Kreuztabellenabfrage unter VB.NET, also in diesem Fall ja ein VIEW und kein Abfrage, nicht geht.

          Die Frage ist also nun, wie ich es lösen kann?
          Oder wie mache ich zum Beispiel ein CREATE PROCEDURE ?

          Gruß Frank

          Comment


          • #6
            http://www.eggheadcafe.com/software/...access-au.aspx

            bin kein sql-PROCEDURE "profi" ... sorry

            aber grundsätzlich hatte ich änliche probleme von access auf vs .... und mache jetzt alles in tables oder linq etc. ....
            Vor 4,5 Millionen Jahren lernten ~wir~ aufrecht zu gehen!
            Um heute vorm PC zu sitzen!

            Comment

            Working...
            X