Avatar billede lemk5 Nybegynder
05. december 2003 - 13:20 Der er 12 kommentarer

sql query

Hej jeg skal bruge en sql som henter navnene fra en tabel (tabel 1) de skal kun hentes hvis de i table 2 både har fooid = 1 og fooid = 2. (altså i 2 rækker) jeg er altså ikke interesseret hvis de enten kun har fooid=1 eller 2 men skal have begge ;)

tabel 1
id , navn
tabel 2
id, navnid,fooid
Avatar billede krydset Nybegynder
05. december 2003 - 13:29 #1
$res = mysql_qury"("SELECT * FROM tabel1, tabel2 WHERE fooid = '1' AND fooid ='2'");

while ($row = mysql_fetch_array($res)) {
echo $row[navn];
}
Avatar billede krydset Nybegynder
05. december 2003 - 13:30 #2
Hov en lille fejl :-O

$res = mysql_qury"("SELECT * FROM tabel1, tabel2 WHERE tabel2.fooid = '1' AND table2.fooid ='2'");
Avatar billede overchord Nybegynder
05. december 2003 - 13:31 #3
Kan ikke lige gennemskue hvad relationen mellem 1 og 2 er men antager at det er id og navnid

SELECT table1.navn FROM Table1 INNER JOIN Table2 ON table1.id = table2.id WHERE table2.fooid = 1 OR table2.fooid=2;
Avatar billede lemk5 Nybegynder
05. december 2003 - 13:32 #4
nej så kunne jeg gopdt lige klare den hvis den var så simpel ;)
Det går jo ikke da fooid kun kan være 1 væredi pr. række. DIn sql siger at de skal være lig 1 og 2 i samme række hvilket af gode grunde ikke kan lade sig gøre.
Avatar billede lemk5 Nybegynder
05. december 2003 - 13:35 #5
det før var til krydset og overchord din løsning giver jo alle som enten har fooid = 1 eller 2 de SKAL være i begge.
Avatar billede krydset Nybegynder
05. december 2003 - 13:47 #6
ahhh sorry var er ikke så meget inde i det endnu, men prøvede da ;)
Avatar billede lemk5 Nybegynder
05. december 2003 - 13:54 #7
:D
Avatar billede overchord Nybegynder
05. december 2003 - 14:42 #8
ok dvs du har reelt set identisk materiale men hvor fooid varierer eller hvad??
Avatar billede overchord Nybegynder
05. december 2003 - 14:47 #9
SELECT tabel1.navn FROM Table1 INNER JOIN Table2 ON table1.id = table2.navnid WHERE count(SELECT tabel1.navn FROM Table1 INNER JOIN Table2 ON table1.id = table2.navnid WHERE fooid = 1 OR fooid =2)=2;
Avatar billede leifj Nybegynder
15. december 2003 - 14:07 #10
Jeg har ikke selv forsøgt med nedennævnte, men jeg tror den sql kan uddrage de rigtige oplysninger:
select
T1a.*, T1b.*, T2.*
from
Tabel1 T1a, Tabel1 T1b, Tabel2 T2
where
(((T1a.ID=T2.NavnID) and (T2.FooID='1')) or
((T1b.ID=T2.NavnID) and (T2.FooID='2')) and
(T1a.ID=T1b.ID))
Avatar billede leifj Nybegynder
15. december 2003 - 14:12 #11
Hov, jeg tror, jeg mangler en parentes, jeg har ikke adgang til SQL, hvor jeg sidder nu.

select
T1a.*, T1b.*, T2.*
from
Tabel1 T1a, Tabel1 T1b, Tabel2 T2
where
((((T1a.ID=T2.NavnID) and (T2.FooID='1')) or
((T1b.ID=T2.NavnID) and (T2.FooID='2'))) and
(T1a.ID=T1b.ID))
Avatar billede leifj Nybegynder
03. januar 2004 - 20:24 #12
Er det ikke på tide at lukke spørgsmålet
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