Jeg skal returneret poster for alle varer samt for hver vare et felt som enten er NULL eller indeholder kundenr. hvis den pågældende kunde har købt varen tidligere.
Data skal udtrækkes med kriterier for kundenr (custID) og varegruppe (prodCategoryID).
Jeg har forsøgt med nedenstående SQL forespørgsel, men den returnerer et tomt datasæt.
SELECT tblProducts.prodID, tblProducts.description, tblCustBuys.custID FROM tblProducts LEFT JOIN tblCustBuys ON tblvarevariant.prodID = tblCustBuys.prodID WHERE (tblkundekoeb.custID = 'xxxxxxxx' Or (tblCustBuys.custID Is Null and tblCustBuys.prodID is NULL)) and tblProducts.prodCategoryID = 612
Forhåbentligt er der et klogt hoved der har svaret.
I et inbound callcenter, hvor identiteten på den, der ringer ind, skal bekræftes, kan kontrollen nu foregå i telefonkøen. Det understøtter fem centrale KPI'er for callcentre.
SELECT tblProducts.prodID, tblProducts.description, tblCustBuys.custID FROM tblProducts LEFT JOIN tblCustBuys ON tblProducts.prodID = tblCustBuys.prodID WHERE (tblCustBuys.custID = 'xxxxxxxx' OR tblCustBuys.custID IS NULL) and tblProducts.prodCategoryID = 612
1) Du anvender 2 tabeller "tblvarevariant" og "tblkundekoeb" som enten ikke er erklæret i FROM clause eller er anvendt i et forkert sammenhæng (JOIN fy)
2) Det giver ikke nogen mening at bruge tblCustBuys.prodID IS NULL i dit WHERE clause... DE EKSISTERER IKKE EFTER EN JOIN PÅ DENNE VÆRDI!
Derudover er jeg ikke helt sikker på at den vil æde dit where clause efter du selv har join'et tabellerne... skriv lige hvis den stadigvæk brokker sig, så omskriver jeg lige hurtigt.
SELECT tblProducts.prodID, tblProducts.description, tblCustBuys.custID FROM tblProducts LEFT JOIN tblCustBuys ON tblProducts.prodID = tblCustBuys.prodID WHERE (tblCustBuys.custID = 'xxxxxxxx' OR tblCustBuys.custID IS NULL) and tblProducts.prodCategoryID = 612
Ovenstående uden "Where" returnere alle kombinationer af varer og kundenr der kan laves på varetabel og kundekøbstabel. Jeg skal kun bruge en post for hver vare samt et felt der angiver om kunde xxxxxxx tidligere har købt varen
SELECT temp.prodID, temp.description, temp.custID FROM (tblProducts LEFT JOIN tblCustBuys ON tblProducts.prodID = tblCustBuys.prodID) AS temp WHERE (temp.custID = 'xxxxxxxx' OR temp.custID IS NULL) and temp.prodCategoryID = 612
SELECT t1.prodID, t1.description, t2.custID FROM tblProducts t1, tblCustBuys t2 AS temp WHERE (temp.custID = 'xxxxxxxx' OR temp.custID IS NULL) and temp.prodCategoryID = 612
hvis jeg skriver :
SELECT t1.prodID, t1.description, t2.custID FROM tblProducts t1, tblCustBuys t2 WHERE (t2.custID = 'xxxxxxxx' OR t2.custID IS NULL) and t1.prodCategoryID = 612
får jeg ikke et tomt datasæt men heller ikke alle linier i tblProducts og custID er lig 'xxxxxxx' for alle poster i det returnerede datasæt !
Jeg har fået det ønskede resultat ved at skrive til forespørgsler i Access og derefter kombinere dem i en tredje, men den går jo ikke i mySQL ! Derfor har jeg brug for hjælp til en omskrivning af de tre forespørgsler til een.
(Tabeller og feltnavne er rettet til dansk)
QRY3 (resultatet): SELECT qry1.varenr, qry1.Overskrift, qry2.kundenr FROM qry1 LEFT JOIN qry2 ON qry1.varenr = qry2.varenr;
QRY2: SELECT tblkundekoeb.varenr, tblkundekoeb.kundenr FROM tblkundekoeb WHERE (((tblkundekoeb.kundenr)="xxxxxxxx" Or (tblkundekoeb.kundenr) Is Null));
QRY1: SELECT DISTINCT tblvarevariant.Varenr, tblvarevariant.Overskrift FROM tblvarevariant LEFT JOIN tblkundekoeb ON tblvarevariant.Varenr = tblkundekoeb.varenr;
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.