Avatar billede bjarkekr Nybegynder
08. september 2004 - 12:33 Der er 12 kommentarer og
1 løsning

Problem med SELECT

Hejsa!!

Jeg har et problem med en SQL sætning. Her er den:

SQL= "SELECT gennemsnit.* FROM gennemsnit WHERE gennemsnit.varer='mobler' AND (SELECT spillerdb.klan, gennemsnit.saelger FROM spillerdb,gennemsnit WHERE spillerdb.id=gennemsnit.saelger;)!=(SELECT spillerdb.klan, gennemsnit.kober FROM spillerdb,gennemsnit WHERE spillerdb.id=gennemsnit.kober;);";


Jeg har en tabel kaldet gennemsnit som indeholder en række varer med et idnr på sælger og køber. Jeg vil så gerne have valgt alle de rækker hvor sælger og køber ikke er i samme klan. klanen kan jeg se i tabellen spillerdb. Derfor ville jeg prøve at vælge de tabeller hvor spillerdb.klan for gennemsnit.kober != fra spillerdb.klan for gennemsnit.saelger.

Er det forståeligt, eller skal der mere forklaring til??
Avatar billede hmortensen Nybegynder
08. september 2004 - 12:46 #1
prøv med 'NOT IN' istedet for !=
Avatar billede michael_stim Ekspert
08. september 2004 - 12:48 #2
Man kan vist ikke lave "inbeddede" SELECT i MySQL.
Avatar billede bjarkekr Nybegynder
08. september 2004 - 12:49 #3
Stadig samme fejl...

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[MySQL][ODBC 3.51 Driver][mysqld-3.23.55-log]You have an error in your SQL syntax near 'SELECT spillerdb.klan, gennemsnit.saelger FROM spillerdb,gennemsnit WHERE spille' at line 1

/gennemsnit.asp, line 10
Avatar billede bjarkekr Nybegynder
08. september 2004 - 12:52 #4
Men der må da være en måde at løse problemet på...
Avatar billede hmortensen Nybegynder
08. september 2004 - 12:53 #5
Måske noget i den her retning:

SELECT gennemsnit.*
FROM gennemsnit
WHERE
(gennemsnit.varer='mobler')
AND
    ((SELECT spillerdb.klan, gennemsnit.saelger
    FROM spillerdb,gennemsnit
    WHERE spillerdb.id=gennemsnit.saelger)
NOT IN
    (SELECT spillerdb.klan, gennemsnit.kober
    FROM spillerdb,gennemsnit
    WHERE spillerdb.id=gennemsnit.kober))
Avatar billede michael_stim Ekspert
08. september 2004 - 12:55 #6
Med Joins. Det er ikke lige min stärke side, men der er masser af folk her på eksperten der kan.
Avatar billede eagleeye Praktikant
08. september 2004 - 13:01 #7
Et bud med join:

SQL= "SELECT gennemsnit.* FROM (gennemsnit left join spillerdb on gennemsnit.saelger = spillerdb.id) left join spillerdb as c on gennemsnit.kober = c.id WHERE gennemsnit.varer='mobler' and spillerdb.klan <> c.klan";
Avatar billede bjarkekr Nybegynder
08. september 2004 - 13:07 #8
eagleeye> Din ser ud til at virke... :-)

takker mange gange... :-)

Lav lige et svar så du kan få point.
Avatar billede eagleeye Praktikant
08. september 2004 - 13:08 #9
ok :)
Avatar billede bjarkekr Nybegynder
08. september 2004 - 16:58 #10
hmm... Helt virker den ikke...
Avatar billede bjarkekr Nybegynder
08. september 2004 - 16:59 #11
Den vælger kun 3 rækker... Og der er mange flere.. Undersøger det lige lidt nærmere.
Avatar billede bjarkekr Nybegynder
08. september 2004 - 17:37 #12
ok.. Dette virker:
SQL= "SELECT gennemsnit.* FROM
(gennemsnit left join spillerdb on gennemsnit.saelger = spillerdb.id)
left join spillerdb as c on gennemsnit.kober = c.id
WHERE gennemsnit.varer='mobler' and
(spillerdb.klan <> c.klan OR spillerdb.klan is null)";

Jeg har tilføjet dette: "spillerdb.klan is null", da den ikke ville vise fra alle de spillere som slet ikke var i klan.

Men endnu engang tak for hjælpen.
Avatar billede eagleeye Praktikant
08. september 2004 - 18:53 #13
Ja ok det skal også med :)
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