Meddelande

Minska
No announcement yet.

SQL. Fråga.... FROM [table] WHERE ...

Minska
X
  • Filter
  • Klockan
  • Show
Clear All
new posts

  • SQL. Fråga.... FROM [table] WHERE ...

    SQL = "SELECT l.intID, l.strName, l.intMapIndex, l.strText " _
    & ", (SELECT COUNT(*) FROM [artists] a WHERE a.intLocationID = l.intID)" _
    & ", (SELECT COUNT(*) FROM [artists] a WHERE a.intLocationID = l.intID AND a.bolView = TRUE AND l.bolView = TRUE ) " _
    & " FROM [location] l WHERE " _
    & ", (SELECT COUNT(*) FROM [artists] a WHERE a.intLocationID = l.intID AND a.bolView = TRUE AND l.bolView = TRUE ) > 0 " _
    & " AND l.bolView = TRUE ORDER BY l.strName"

    ***
    Jag har problem med den markerade raden. Kan man inte räkna poster på det viset och ta med de som är mer än 0?

  • #2
    Om man tar bort kommatecknet i början av raden så fungerar det! :-)

    SQL = "SELECT l.intID, l.strName, l.intMapIndex, l.strText " _
    & ", (SELECT COUNT(*) FROM [artists] a WHERE a.intLocationID = l.intID)" _
    & ", (SELECT COUNT(*) as tmpCounter FROM [artists] a WHERE a.intLocationID = l.intID AND a.bolView = TRUE AND l.bolView = TRUE ) " _
    & " FROM [location] l WHERE " _
    & " tmpCounter > 0 " _
    & " AND l.bolView = TRUE ORDER BY l.strName"

    Denna varianten känner jag skulle vara lite snyggare.... men det fungerar inte.

    [SIZE=2]Microsoft JET Database Engine[/SIZE] [SIZE=2]error '80040e10'[/SIZE]
    [SIZE=2]No value given for one or more required parameters.[/SIZE]
    [SIZE=2]/vako_cms/admin/location/listan.asp[/SIZE][SIZE=2], line 42[/SIZE]
    Men å andra sidan!! Denna gången kan jag leva med lite sunkig kod. Viktigare är att det fungerar!

    Kommentera


    • #3
      angelica skrev: Visa inlägg
      Om man tar bort kommatecknet i början av raden så fungerar det! :-)
      Om du ändrade dina radbrytningar så att de inleds (inte avslutas) med SQL:s kodord skulle koden bli lättare att läsa, också för dig själv tror jag:

      SQL = "SELECT l.intID, l.strName, l.intMapIndex, l.strText " _
      & ", (SELECT COUNT(*) FROM [artists] a WHERE a.intLocationID = l.intID)" _
      & ", (SELECT COUNT(*) FROM [artists] a WHERE a.intLocationID = l.intID AND a.bolView = TRUE AND l.bolView = TRUE ) " _
      & " FROM [location] l " _
      & "WHERE (SELECT COUNT(*) FROM [artists] a WHERE a.intLocationID = l.intID AND a.bolView = TRUE AND l.bolView = TRUE ) > 0 " _
      & " AND l.bolView = TRUE ORDER BY l.strName"

      Då ser du direkt varför den raden inte börjar med kommatecken.


      angelica skrev: Visa inlägg
      SQL = "SELECT l.intID, l.strName, l.intMapIndex, l.strText " _
      & ", (SELECT COUNT(*) FROM [artists] a WHERE a.intLocationID = l.intID)" _
      & ", (SELECT COUNT(*) as tmpCounter FROM [artists] a WHERE a.intLocationID = l.intID AND a.bolView = TRUE AND l.bolView = TRUE ) " _
      & " FROM [location] l WHERE " _
      & " tmpCounter > 0 " _
      & " AND l.bolView = TRUE ORDER BY l.strName"

      Denna varianten känner jag skulle vara lite snyggare.... men det fungerar inte.
      Det beror på att tmpCounter inte finns i din yttersta fråga, bara i subuttrycket. Här har du en kolumn som heter tmpCounter:
      SELECT COUNT(*) as tmpCounter FROM [artists] a WHERE a.intLocationID = l.intID AND a.bolView = TRUE AND l.bolView = TRUE

      Men i den yttre frågan är denna kolumn namnlös:
      (SELECT COUNT(*) as tmpCounter FROM [artists] a WHERE a.intLocationID = l.intID AND a.bolView = TRUE AND l.bolView = TRUE ) och kan inte refereras till senare.

      Testa att skriva:
      SQL = "SELECT l.intID, l.strName, l.intMapIndex, l.strText " _
      & ", (SELECT COUNT(*) FROM [artists] a WHERE a.intLocationID = l.intID)" _
      & ", (SELECT COUNT(*) as tmpCounter FROM [artists] a WHERE a.intLocationID = l.intID AND a.bolView = TRUE AND l.bolView = TRUE ) as artistCounter" _
      & " FROM [location] l " _
      & " WHERE artistCounter > 0 " _
      & " AND l.bolView = TRUE ORDER BY l.strName"

      Om det inte funkar får du mellanlagra uttrycket för artistCounter i en temptabell och joina in den i din fråga. Då om inte förr funkar det.

      Kommentera


      • #4
        Ah!!
        Knivigt, klurigt, lurigt!!
        Tack för dina tips! Jag ska tänka på det!

        Tack för räknaren där på slutet!

        Kommentera

        Working...
        X