Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


LEFT JOIN mot Access?

Postades av 2003-03-20 08:20:52 - Daniel Åsberg, i forum asp - allmänt, Tråden har 12 Kommentarer och lästs av 738 personer

Går de att köra nån slags (LEFT) JOIN mot en Access databas? Och hur ser syntaxen ut för de isånnafall?


Svara

Sv: LEFT JOIN mot Access?

Postades av 2003-03-20 08:30:20 - Christoffer Hedgate

<code>
SELECT c.customerid, COUNT(o.orderid)
FROM CUSTOMERS c
LEFT OUTER JOIN ORDERS o
ON c.customerid = o.customerid
</code>

Listar alla kunder, samt hur många order varje kund har. Om en kund inte har några order blir värdet i den andra kolumnen 0. Skulle man däremot skrivit som nedan skulle inte kunden kommit med i resultatet alls om den inte hade några order:

<code>
SELECT c.customerid, COUNT(o.orderid)
FROM CUSTOMERS c
INNER JOIN ORDERS o
ON c.customerid = o.customerid
</code>


Svara

Sv: LEFT JOIN mot Access?

Postades av 2003-03-20 09:05:04 - Daniel Åsberg

Ser ut att fungera.

Fast jag skulle vilja ha ett till kriterie mot den högra tabellen. Att ett fält ska vara siffran 2. Hur gör jag då?


Svara

Sv: LEFT JOIN mot Access?

Postades av 2003-03-20 09:59:15 - Christoffer Hedgate

<code>
SELECT c.customerid, COUNT(o.orderid)
FROM CUSTOMERS c
LEFT OUTER JOIN ORDERS o
ON c.customerid = o.customerid
AND o.whatever = 2
</code>


Svara

Sv: LEFT JOIN mot Access?

Postades av 2003-03-20 10:06:18 - Andreas Hillqvist

Om du letar efter en fråga som ser ut så här:

SELECT Customers.*, Orders.*
FROM Customers LEFT JOIN
Orders ON Customers.customerid = Orders.customerid AND Orders.Status = 2

Så går det tyvär inte att skriva i Access. Men du kan lösa det på så sätt att du skriver och sparar en fråga i Access:

Namn: qryOrdersStatus2
SELECT Orders.*
FROM Orders
WHERE Orders.Status = 2

Sedan göra en join mot frågan:
SELECT Customers.*, qryOrdersStatus2.*
FROM Customers LEFT JOIN
qryOrdersStatus2 ON Customers.customerid = Orders.customerid

Du kan även använda parametrar. På så sätt dynamiskt välja värde i den sparade frågan. Se uppskick: Avancerad summering i flera fråger i ASP
Programarkivet:Avancerad summering i flera fråger i ASP


Svara

Sv: LEFT JOIN mot Access?

Postades av 2003-03-20 10:41:38 - Andreas Hillqvist

Det är intressant att vi båda valde 2 som konstant. ;o)


Svara

Sv: LEFT JOIN mot Access?

Postades av 2003-03-20 14:11:30 - Daniel Åsberg

Tackar.... ser ut som att jag är en bit på vägen nu. Men ett problem har uppstått:

En fråga som heter Query1 och ser ut som så här:
PARAMETERS [MinDate] DateTime;
SELECT BB.*
FROM BB
WHERE BB.BDate=[MinDate];


Sen min selectsats plus mer:
Const adDate = 7
Const adCmdTable = 2
Const adParamInput = 1
Set cmd = Server.CreateObject("ADODB.Command")
Set cmd.ActiveConnection= conn
cmd.CommandType = adCmdTable
cmd.CommandText = "Query1"
cmd.Parameters.Append cmd.CreateParameter("MinDate", adDate, adParamInput,,CDate("2003-03-03"))


SELECT * FROM DateNTime_LU LEFT JOIN Query1 ON DateNTime_LU.DID = Query1.BTime

Och får då felmeddelandet: "För få parametrar angavs. 1 förväntades."

Skriver jag istället:
SELECT * FROM DateNTime_LU LEFT JOIN Query1 ON DateNTime_LU.DID = BB.BTime

Då får jag meddelandet: "Syntaxfel i JOIN-operation."


Vart är felet?


Svara

Sv: LEFT JOIN mot Access?

Postades av 2003-03-20 23:16:53 - Jan Bulér

Andreas,

Jag tror det ska funka att skriva det med en fråga om man gör så här,

SELECT Customers.*, Orders.*
FROM Customers LEFT JOIN Orders ON Customers.CustomerId = Orders.CustomerId
WHERE Orders.Status=2 OR Orders.CustomerId Is Null;


Orders.CustomerId Is Null är sant om det inte finns någon post i Orders som matchar Customers.

Jag gjorde en snabbtest i Access och det verkar fungera.

//

Janne


Svara

Sv: LEFT JOIN mot Access?

Postades av 2003-03-20 23:28:56 - Andreas Hillqvist

JAg vet inte hur du använder/anropar din SQL-satsen. Men du bör testa med att skriva något sådant här:
<code>
Const adDate = 7
Const adCmdText = 1
Const adParamInput = 1

Set cmd = Server.CreateObject("ADODB.Command")
Set cmd.ActiveConnection = conn
cmd.CommandType = adCmdText
cmd.CommandText = "SELECT *" & vbCrLf & _
"FROM DateNTime_LU LEFT JOIN" & vbCrLf & _
" Query1 ON DateNTime_LU.DID = Query1.BTime"
cmd.Parameters.Append cmd.CreateParameter("MinDate", adDate, adParamInput,,CDate("2003-03-03"))

Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open cmd

Do Until rs.Eof

rs.MoveNext
Loop
rs.Close
Set rs = Nothing

Set cmd.ActiveConnection = Nothing
Set cmd = Nothing

conn.Close
Set conn = Nothing
</code>


Svara

Sv: LEFT JOIN mot Access?

Postades av 2003-03-20 23:33:08 - Andreas Hillqvist

Det har jag inte tänkt på. Men har råkat ut för att konstanter inte är tillåtna i ON vilkoret.
Vet inte vilket sätt som är bäst.

Jag tror min variant filtrerar ju urvalet innan Joinen. På så sätt förre Joins behövs göras. Medans din kod är tvungen att filtrera efter joinen. KAn var bättre ur prestanda synpunkt at filtrera innan tror jag.

Men det kan nog det kloka databas experterna eller några tester upplysa oss om. ;o)


Svara

Sv: LEFT JOIN mot Access?

Postades av 2003-03-20 23:40:39 - Christoffer Hedgate

Helt rätt Andreas att det är bättre att filtrera innan (det är ju faktiskt inte ens samma fråga, även om resultatet blir det samma). Jag förstår dock inte varför Access inte klarar av den sql-sats jag skrev, men så är väl läget helt enkelt.


Svara

Sv: LEFT JOIN mot Access?

Postades av 2003-03-21 00:15:54 - Andreas Hillqvist

Testad för säkerhets skull mot Northwind:

SELECT Kunder.*, Order.*
FROM Kunder INNER JOIN [Order] ON Kunder.Kundnr = Order.Kundnr AND Order.Anställningsnr = 1;

Fungerar inte. Men om man omger uttrycken i on vilkoret med parantes fungerar det. ;o)

SELECT Kunder.*, Order.*
FROM Kunder INNER JOIN [Order] ON (Kunder.Kundnr = Order.Kundnr AND Order.Anställningsnr = 1);

Vet inte om det alltid varit så. Hade nämnligen problem med fråger av denna typ i tidigare versioner av access. Då var jag tvungen att ha fält från tabellerna på varje sida av operatorn för at access skulle svälja frågan.

Tur att jag kollade upp det. Innan jag gjorde bort mig allt för mycket. ;o)


Svara

Sv: LEFT JOIN mot Access?

Postades av 2003-03-21 08:24:12 - Jan Bulér

Ok, med lite eftertanke så håller jag med dig ang prestanda resonemanget.

//
Janne


Svara

Nyligen

  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av
  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 808
27 960
271 761
572
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies