Avatar billede suntrip Nybegynder
24. december 2002 - 01:58 Der er 9 kommentarer og
1 løsning

SELECT 2 gange fra samme tabel???

har siddet og tænkt over hvordan jeg skal få SELECTET 2 gange fra den samme table

eksp.

table1
col_id
col_navn

table2
col_id1
col_id2


nu er det at jeg så gerne kunne tænke mig at få et resultat
der hedder

col_navn, col_navn

min tanke var

SELECT col_navn
FROM table1, table2
WHERE table1.col_id = table2.col_id1 AND table1.col_id = table2.col_id2

men den kan kun få navnet på den ene ID

:((

hvad gør jeg?

håber der er nogen der forstår
Avatar billede moreless Nybegynder
24. december 2002 - 03:23 #1
ehm, det er lidt svært at tyde din tankegang men sådan her:

SELECT table1.col_navn, table2.col_navn
FROM table1, table2
WHERE table1.col_id = table2.col_id1
AND table1.col_id = table2.col_id2
Avatar billede suntrip Nybegynder
24. december 2002 - 03:34 #2
???

kan jeg ikk...... har col_navn findes ikke i table2 men kun i table1...

jeg skal have 2 navne fra samme table (table1) udfra de to id'er der findes i en row i table2...

table1
col_id  col_navn
  1      ting
  2      ting2

table2
col_id1 col_id2
  1        2


resultaten af min SELECT skulle gerne blive

ting1 ting2


håber det forklar bedre :)
Avatar billede thomas.k Nybegynder
24. december 2002 - 09:06 #3
Har du prøvet at udskifte AND med OR ?

SELECT col_navn
FROM table1, table2
WHERE table1.col_id = table2.col_id1 OR table1.col_id = table2.col_id2

Som jeg tolker dit spørgsmål, så stiller du jo egentlig denne betingelse:
  table2.col_id1 = table2.col_id2
-og så er det jo ikke så mærkeligt at du kun får en enkelt linje...
Avatar billede moreless Nybegynder
24. december 2002 - 14:37 #4
altså jeg kan joi se at du har een væsenlig ting som er forkert

SELECT col_navn
FROM table1, table2

her skal du kun sige

SELECT col_navn
FROM table1

da du ikke skal selecte noget fra table2 ?
Avatar billede suntrip Nybegynder
25. december 2002 - 01:09 #5
ved jeg godt...

det hele er bare et forsøg på at komme frem til løsning...
Avatar billede moreless Nybegynder
25. december 2002 - 01:14 #6
jeg vil gerne hjælpe dig, men jeg kan altså stadig ikke overskue din sql struktur
Avatar billede suntrip Nybegynder
25. december 2002 - 01:23 #7
oki

jeg har 2 tabeller som du nok kan se :)

i table2 er der 2 forskellige id'er de id'er knyttet til et navn i table1.....

nu er det så at når jeg SELECT'er en row i table2 så skal jeg have navnene i stedet for id'erne.....

bedre?
Avatar billede proaccess Nybegynder
25. december 2002 - 09:18 #8
Prøv med denne:

SELECT T1A.col_navn AS T1A_navn, T1B.col_navn AS T1B_navn
FROM table1 AS T1A, table1 AS T1B, table2
WHERE table2.col_id1=T1A.col_id AND table2.col_id=T1B.col_id;
Avatar billede thomas.k Nybegynder
25. december 2002 - 12:25 #9
<proaccess> har fat i det rigtige hvis du ellers har to tabeller som disse:

  mysql> select * from table1;
  +--------+----------+
  | col_id | col_navn |
  +--------+----------+
  |      1 | ting1    |
  |      2 | ting2    |
  |      3 | ting3    |
  +--------+----------+
  3 rows in set (0.01 sec)

  mysql> select * from table2;
  +---------+---------+
  | col_id1 | col_id2 |
  +---------+---------+
  |      1 |      2 |
  |      1 |      3 |
  |      2 |      3 |
  +---------+---------+
  3 rows in set (0.00 sec)

Du vil dog få et resultat med tre rækker hvis du ikke gør noget for at begrænse det:

  mysql> select T1A.col_navn AS navn_1, T1B.col_navn AS navn_2
      -> from table1 AS T1A, table1 AS T1B, table2
      -> where table2.col_id1=T1A.col_id and table2.col_id2=T1B.col_id;
  +--------+--------+
  | navn_1 | navn_2 |
  +--------+--------+
  | ting1  | ting2  |
  | ting1  | ting3  |
  | ting2  | ting3  |
  +--------+--------+
  3 rows in set (0.00 sec)

Hvis du kun ønsker en enkelt række i dit resultat, så må du sætte nogle betingelser i din where-sætning. Enten må du angive noget i stil med "AND table2.col_id1=1 and table2.col_id2=3", så får du resultatet:

  mysql> select T1A.col_navn AS navn_1, T1B.col_navn AS navn_2
      -> from table1 AS T1A, table1 AS T1B, table2
      -> where table2.col_id1=T1A.col_id and table2.col_id2=T1B.col_id
      -> AND table2.col_id1=1 and table2.col_id2=3;
  +--------+--------+
  | navn_1 | navn_2 |
  +--------+--------+
  | ting1  | ting3  |
  +--------+--------+
  1 row in set (0.00 sec)
 
eller også må du tilføje et unikt id felt til table2
Avatar billede suntrip Nybegynder
25. december 2002 - 15:10 #10
takker for hjælpen :))


glædelig bag jul og godt nytår
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