Avatar billede tzag_dk Nybegynder
17. marts 2004 - 13:39 Der er 9 kommentarer og
1 løsning

SESLCT fra 2 tabeller

Hej

Hvordan laver man udtræk fra 2 tabeller samtidig?
Jeg har forsøgt med dette:

SELECT * FROM hotbilleder WHERE godkendt = '1' UNION SELECT * FROM profiler WHERE kon = '1' ORDER BY RAND()

Men får denne fejl:
The used SELECT statements have a different number of columns

På forhånd tak!
//Rene
Avatar billede jakobclausen Nybegynder
17. marts 2004 - 13:41 #1
Prøv med

SELECT * FROM hotbilleder, profiler WHERE hotbilleder.godkendt = '1' AND profiler.kon = '1' ORDER BY RAND()
Avatar billede eagleeye Praktikant
17. marts 2004 - 13:43 #2
Det kommer lidt an på hvordan du ønsker dit udtræk.
Skal det være JOIN hvor tabellerne er ved siden af hinanden eller med UNION hvor de er efter hinanden?
Avatar billede eagleeye Praktikant
17. marts 2004 - 13:47 #3
nu har du jo selv skrevet UNION. For en UNION virker skal der hedtes lige mange kolonner fra begge tabeller.

Eks:

SELECT id, navn FROM hotbilleder WHERE godkendt = '1' UNION ALL SELECT id, navn FROM profiler WHERE kon = '1' ORDER BY RAND()
Avatar billede tzag_dk Nybegynder
17. marts 2004 - 13:56 #4
Kan man lave noget i denne retning?

SELECT id, profilerID FROM hotbilleder WHERE godkendt = '1' UNION ALL SELECT id, profilnavn FROM profiler WHERE kon = '1' AND id = profilerID ORDER BY RAND()

Det er til hot or not, hvor man skal kunne vælge om man vil se kvinder eller mænd.
Billederne ligger i en db:
------hotbilleder--------
id  profilerID  billede
-------------------------
4    1            4.jpg

-------profiler----------
id  kon          partnerstatus
-------------------------
1    1            2

Jeg er blevet lidt i tvivl om hvordan det skal trækkes ud :-(

// Rene
Avatar billede tzag_dk Nybegynder
17. marts 2004 - 14:13 #5
Jeg tror at det er sådan her det skal løses:
SELECT * FROM hotbilleder, profiler WHERE hotbilleder.godkendt = '1' AND profiler.kon = '1' AND hotbilleder.profilerID = profiler.id ORDER BY RAND()

Er I med på hvad jeg mener?
Men det giver denne fejl igen:
The used SELECT statements have a different number of columns
// Rene
Avatar billede eagleeye Praktikant
17. marts 2004 - 14:18 #6
får du den fejl med denne:
SELECT * FROM hotbilleder, profiler WHERE hotbilleder.godkendt = '1' AND profiler.kon = '1' AND hotbilleder.profilerID = profiler.id ORDER BY RAND()

Eller så prøv med JOIN:

SELECT * FROM hotbilleder LEFT JOIN profiler ON hotbilleder.profilerID = profiler.id WHERE hotbilleder.godkendt = '1' AND profiler.kon = '1' ORDER BY RAND()
Avatar billede tzag_dk Nybegynder
17. marts 2004 - 14:27 #7
Jeg tester det lige :-)

// Rene
Avatar billede tzag_dk Nybegynder
17. marts 2004 - 14:38 #8
Det virker som det skal :-)
Point?

Har du et eller andet med en online liste?
Hvor man kan se brugernavn på dem.

// Rene
Avatar billede eagleeye Praktikant
17. marts 2004 - 14:44 #9
Ok et svar :)

online test?
Avatar billede tzag_dk Nybegynder
17. marts 2004 - 14:47 #10
Jeg kan nemlig ikke helt finde ud af det med online liste.
Det er bare en simpel online liste hvor man kan se profilnavn og billede af dem som der er online :-)
Det behøves ikke at være en online test.

// Rene
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
Kurser inden for grundlæggende programmering

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

IT-JOB