Avatar billede avest Nybegynder
30. juli 2003 - 21:14 Der er 10 kommentarer og
1 løsning

SQL: where A.delstreng i B.streng

Jeg har to tabeller A og B.
A indeholder brugernavn og kammasepareret tal liste.

Eksempel: A.streng='1,3,22,55' A.user='mitnavn'
de enkelte tal i strengen refererer til id'er i tabel B.

B indeholder bl.a. et id felt som B.id='22'

Jeg vil gerne have en liste bestående af de fire rækker 1,3,22,55 i tabel B.
Avatar billede avest Nybegynder
30. juli 2003 - 21:17 #1
JEg kender ikke meget til sql, men jeg kunne forestille mig noget lignende.

WHERE A.user='mitnavn' AND A.streng LIKE B.id
Avatar billede arne_v Ekspert
30. juli 2003 - 21:21 #2
Prøv med:

WHERE A.user='mitnavn' AND A.streng LIKE CONCAT('%', B.id, '%')
Avatar billede arne_v Ekspert
30. juli 2003 - 21:23 #3
Iøvrigt er en komma separeret liste sjældent en god løsning
i en database.

Normalt vil man splitte den op i flere records i en separat tabel, altså:
1 'mitnavn'
3 'mitnavn'
22 'mitnavn'
55 'mitnavn'
Avatar billede Slettet bruger
30. juli 2003 - 21:26 #4
Eller
WHERE A.user='mitnavn' AND b.id in A.streng
Avatar billede avest Nybegynder
30. juli 2003 - 21:32 #5
Jeg er lige overrasket hvergang. Der går sjældent mere end 10 minutter før første forslag ligger klar.

Det virkede. Tak for det.

Nå, jeg lærer nok SQL hen af vejen, men en god manual som den jeg har fundet til php på www.php.net vil gøre underværker ;-)
Avatar billede arne_v Ekspert
30. juli 2003 - 21:38 #6
Nu ved jeg ikke hvilket niveau du søger på.

http://www.w3schools.com/sql/ er meget pædagogisk men går nok ikke
nok i dybden for dig.
Avatar billede arne_v Ekspert
30. juli 2003 - 21:39 #7
Samme med:
  http://www.firstsql.com/tutor.htm

I den lidt anden ende er der MySQL manueln, som faktisk er ret god:
  http://www.mysql.com/doc/en/index.html
Avatar billede erikjacobsen Ekspert
30. juli 2003 - 21:46 #8
berties løsning er langt den hurtigste, og den kan også udnytte når det
er et indexeret felt.
Avatar billede arne_v Ekspert
30. juli 2003 - 21:55 #9
Er det en ny feature i 4.x ?

(det virke ikke i min gamle 3.x)
Avatar billede erikjacobsen Ekspert
30. juli 2003 - 21:59 #10
Hmm, nej, "in" vil kun virke med en konstant streng. Men der er en anden der bør virke (jeg lavede lige et eksempel, så den her er go' nok):

select b.tekst from a,b where a.name='erik' and find_in_set(b.id,a.liste);
Avatar billede arne_v Ekspert
30. juli 2003 - 22:07 #11
Det er faktisk en god løsning !
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