Avatar billede svelmoe Nybegynder
07. januar 2008 - 13:23 Der er 9 kommentarer og
1 løsning

DISTINCT spørgsmål

Jeg har en query der ser sådan ud:
$query = mysql_query ("SELECT DISTINCT pic, type, overflade, kombi, dybde_min, dybde_max, hoejde, bredde, kommentar FROM $projekt") or die(mysql_error());

Jeg skal bruge id'et på de linjer den finder.

men hvis jeg laver den sådan:

$query = mysql_query ("SELECT DISTINCT id, pic, type, overflade, kombi, dybde_min, dybde_max, hoejde, bredde, kommentar FROM $projekt") or die(mysql_error());

tager den alle linjer ud, da id'et altid er forskelligt.

nogen der har en idé?

på forhånd tak.
Avatar billede erikjacobsen Ekspert
07. januar 2008 - 13:33 #1
Når du har flere rækker med samme værdi på de angivne felter, men forskelligt id, hvilket af de mulige id-er skal du så have?
Avatar billede pidgeot Nybegynder
07. januar 2008 - 13:36 #2
Et simpelt lille hack var måske at bruge GROUP BY i stedet for DISTINCT.

$query = mysql_query ("SELECT id, pic, type, overflade, kombi, dybde_min, dybde_max, hoejde, bredde, kommentar FROM $projekt GROUP BY pic, type, overflade, kombi, dybde_min, dybde_max, hoejde, bredde, kommentar") or die(mysql_error());

MySQL kan godt finde ud af at vælge en af værdierne når nogle ikke-beregnede felter ikke er med i ens GROUP BY, så du burde få et ID pr. kombination af de felter du angiver. Du kan evt. bruge MAX eller MIN for at være sikker på du får det højeste/mindste - hvis det har noget at sige, altså.
Avatar billede svelmoe Nybegynder
07. januar 2008 - 13:49 #3
Jeg siger tak pidgeot.

-Erik det er ligemeget hvilket. Pidgeot's måde virker fint, men du havde måske noget andet i tankerne?
Avatar billede erikjacobsen Ekspert
07. januar 2008 - 13:56 #4
Samme løsning fra mig, dog kun med MIN eller MAX, ikke den der specielle mysql-ting, der vælger en "tilfældig" - det er nemlig ikke rigtig SQL, og vil ikke virke andre steder.

Men er du nødt til at lave den slags forespørgsler, så er der måske noget uhensigtsmæssigt i din database-opbygning.
Avatar billede svelmoe Nybegynder
07. januar 2008 - 14:11 #5
kan godt være min database-opbygning ikke er helt i top.

men:
du registrerer et møbel.
finder et mere af samme slags.
trykker tilføj for at tilføje.
det skal have sin egen linje, selvom det er indentisk med det andet. (krav da det skal eksporteres til excel senere.)
men på den ene liste skal man kun kunne se et af hvert møbel.(så registreringen bliver mere overskuelig.)

så ved ikke lige hvordan den kan optimeres
Avatar billede erikjacobsen Ekspert
07. januar 2008 - 14:47 #6
Det er ikke fordi det absolut skal ændres ... men man kunne have et antalfelt ved siden af møbeloplysningerne, og blot sprede det ud til flere linie ved overførsel til Excel.
Avatar billede svelmoe Nybegynder
08. januar 2008 - 08:10 #7
Ja det kan man vel.. men det vel lidt det samme. forskellen er vel bare en lidt større mysql-database...

Nå men pidgeot lægger du et svar? din løsning jeg har brugt. Og ved Erikjacobsen ikke samler.
Avatar billede svelmoe Nybegynder
14. januar 2008 - 22:53 #8
vil gerne have lukket spørgsmålet :)
Avatar billede pidgeot Nybegynder
15. januar 2008 - 09:12 #9
Beklager, har ikke set du bad om et svar :)
Avatar billede svelmoe Nybegynder
15. januar 2008 - 12:34 #10
bare iorden :-)
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