Avatar billede mbw Nybegynder
18. juni 2007 - 16:19 Der er 13 kommentarer og
1 løsning

unik fra 2 tables

Bruger denne select:
SELECT DISTINCT a.album,a.title,f.name
FROM albums a, fotos f WHERE a.album = f.album
men jeg vil ha album til at være unik DISTINCT tager åbenbart dem alle.
Avatar billede fennec Nybegynder
18. juni 2007 - 16:24 #1
Hvad havde du ellers forventet??

Hvis nu du har en database med følgende indhold:
id, Album, title
1, aa1, tt1
2, aa1, tt2
3, aa2, tt1
4, aa2, tt3

Hvilken titel havde du så forventet at trække ud, når der kun må være en aa1 og aa2 række...
Avatar billede mbw Nybegynder
18. juni 2007 - 16:37 #2
Jeg vil bare ha den første :p
Avatar billede michael_stim Ekspert
18. juni 2007 - 16:40 #3
SELECT DISTINCT a.album,a.title,f.name FROM albums a, fotos f WHERE a.album = f.album ORDER BY id ASC LIMIT 1

Ved ikke om det er det du vil.
Avatar billede mbw Nybegynder
18. juni 2007 - 17:08 #4
Ikke helt.

Forklarer helt fra bunden:

Har 2 tabeller.
Albums har 2 columns:
  title (tekststreng som forklarer indhold i album)
  album (tekststreng uden æøå mellemrum osv til brug i kode)
Fotos har en masse columns hvoraf det ene er et billed i en blob.

Det jeg vil gøre er at lave en liste over alle albums i albums tabellen og så vise et billed fra fotos (det er ligemeget hvilket bare det er fra det rigtige album) som et eksempel.
Avatar billede fennec Nybegynder
19. juni 2007 - 08:19 #5
Enten gør du det i dit program:
select * from album
løkke
  select * from fotos where album=album
  udskriv data
løkke slut

Eller også gør du noget i denne stil (ved jeg ikke om MySQL understøtter)
select *, (select name from fotos f where f.album=a.album limit 1) as pic from album a
Avatar billede michael_stim Ekspert
19. juni 2007 - 08:45 #6
Kommaet skal i så fald nok ikke med (i hvert fald ikke i oracle).
Avatar billede michael_stim Ekspert
19. juni 2007 - 08:52 #7
Jaha, nu kan jeg se hvad du tänker på i din anden lösning, fennec. Det kan jeg ikke forstille mig MySQL köber.
Avatar billede fennec Nybegynder
19. juni 2007 - 09:07 #8
Det var jeg heller ikke sikker på, men nu har jeg lige testen den på phpMyAdmin og den kører igennem :o)

Det er dog på en version 5, så kan ikke garentere at det virker på ældre versioner.
Avatar billede fennec Nybegynder
19. juni 2007 - 09:13 #9
Og det er med komma. Jeg testede det på "test" databasen på:
http://pma.cihar.com/STABLE/ (log på med root og uden password)

Med denne sql:
SELECT * , (
  SELECT `data`
  FROM BrugereData bd
  WHERE bd.brugerID = b.id
  LIMIT 1
) AS dat
FROM `brugere` b

Så denne skulle fungere, hvis det vel og mærke er på en 5.0 version af MySQL:
select *, (select name from fotos f where f.album=a.album limit 1) as pic from album a
Avatar billede michael_stim Ekspert
19. juni 2007 - 09:30 #10
Da jeg sagde det med kommaet havde jeg en helt anden ide i hovedet.
SELECT * FROM(SELECT column FROM table WHERE blabla) WHERE ROWNUM < 2
Altså oracle syntax.
Avatar billede michael_stim Ekspert
19. juni 2007 - 09:31 #11
Det er kun 5'eren der kan sub selecte mener jeg.
Avatar billede fennec Nybegynder
19. juni 2007 - 10:15 #12
4 kan også lidt...
Men MySQL blev, i mine øjne, først en rigtig database med version 5. Før det, var der alt for mange mangler, til at jeg ville betegne den som en database.
Avatar billede mbw Nybegynder
19. juni 2007 - 15:34 #13
Tusind tak fennec... Din løsning virker perfekt (lokalt ihvertfald) smid et svar.
Nu krydser jeg bare fingre for at det også virker når jeg smider skidtet op når det hele engang er færdigt.
Avatar billede fennec Nybegynder
19. juni 2007 - 15:41 #14
.o) <-- One Eyed Jack
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