Avatar billede grav Nybegynder
03. april 2004 - 15:35 Der er 5 kommentarer og
1 løsning

Erstatning for subselects

Jeg koerer MySQL 4.1a paa mit testsetup og bruger der nogle queries med subselect. Men det hele skal flyttes til et produktionssetup med MySQL 4.0, som ikke understoetter subselects.
Hvordan faar jeg lettest og enklest aendret forespoergslerne saa de er komp. med v4.0? Er det noget med at jeg kan bruge JOIN i en eller anden sammenhaeng?

Her er en skitse af mine tabeller og forespoergsler:

tabel a:
kunde_id, foer_produkt_id, efter_produkt_id

tabel b:
nyt_og_spaendende_produkt_id

For at finde ud af, hvor mange kunder, der har skiftet til et nyt og spaendende produkt bruger jeg altsaa flg:

SELECT COUNT(*) FROM a WHERE foer_produkt_id NOT IN (SELECT * FROM b) AND efter_produkt_id IN (SELECT * FROM b)
Avatar billede arne_v Ekspert
03. april 2004 - 15:49 #1
Prøv:

SELECT COUNT(*)
FROM ((a AS a1 LEFT JOIN b AS b1 ON a1.fp_id=b1.nosp_id)
    INNER JOIN a AS a2 ON a1.k_id=a2.k_id)
    LEFT JOIN b AS b2 ON a2.ep_id=b2.nosp_id
WHERE b1.nosp_id IS NULL AND NOT b2.nosp_id IS NULL
Avatar billede arne_v Ekspert
12. april 2004 - 20:19 #2
Virker det ?
Avatar billede arne_v Ekspert
12. april 2004 - 20:20 #3
Et svar såfremt det gjorde
Avatar billede grav Nybegynder
12. april 2004 - 23:33 #4
Hej Arne.
Har været på påskeferie, så jeg har ikke fået kikket så meget på det.
Men nej, umiddelbart bliver der returneret alt for mange poster. Jeg prøver lige at læse op på JOIN-kommandoen, så jeg fatter hvad det er ovenstående gør, og så vender jeg tilbage.
Avatar billede arne_v Ekspert
24. april 2004 - 18:06 #5
Kommet videre ?
Avatar billede grav Nybegynder
14. maj 2004 - 20:18 #6
Hej Arne. Jeg endte med at bruge noget PHP til at generere SQL-sætningen, f.eks.
SELECT COUNT(*) FROM a WHERE (id=1 OR id=2 OR id=3 OR id=4).
Temmeligt speget, men det virker. Ellers tak for hjælpen.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester