Avatar billede straszek Praktikant
04. november 2004 - 12:47 Der er 6 kommentarer og
1 løsning

problem med mysql forspørgsel

Jeg bruger nedenstående kode til at generer en mysql forspørgsel.

Hvordan skal den tilpasses så den kun finder en post med hvert medlem_id?

Jeg har prøvet at ændre SELECT til SELECT DISTINCT medlemx.medlem_id, uden at det hjalp.

fields = array('medlem_nummer', 'medlem_fornavn', 'medlem_efternavn', 'medlem_adresse', 'medlem_postnr', 'medlem_by', 'medlem_telefon', 'medlem_mobil', 'medlem_email', 'medlem_foedt', 'medlem_indmeldt', 'medlem_underskrift', 'medlem_bilag', );

$query = "SELECT medlemmer.medlem_fornavn, medlemmer.medlem_efternavn, udd_inst.udd_inst_navn, med_org.med_org_navn, medlemx.medlem_status FROM medlemmer, udd_inst, med_org, medlemx $sqltek AND $struddinst $strmedorg AND med_org.id=medlemx.medlem_medorg AND udd_inst.id=medlemx.medlem_uddinst AND medlemx.medlem_id=medlemmer.id";
$first = 1;

foreach( $fields as $field ) {
  if( !empty( $$field ) ) {
    if( $first ) {
      $first = 0;
      $query .= " AND";
    }
    else {
      $query .= " AND";
    }       

    $query .= " ". $field ." LIKE '%". $$field ."%' ORDER BY medlemmer.medlem_fornavn, medlemmer.medlem_efternavn,  medlemx.medlem_oprettet DESC";
  }
}
Avatar billede straszek Praktikant
04. november 2004 - 12:50 #1
Og det giver en forspørgsel der kunne se sådan ud:

SELECT DISTINCT medlemx.medlem_id, medlemmer.medlem_fornavn, medlemmer.medlem_efternavn, udd_inst.udd_inst_navn, med_org.med_org_navn, medlemx.medlem_status FROM medlemmer, udd_inst, med_org, medlemx WHERE (medlemx.medlem_status='aktiv' OR medlem_status='indaktiv') AND (medlemx.medlem_uddinst ='2' OR medlemx.medlem_uddinst='3') AND med_org.id=medlemx.medlem_medorg AND udd_inst.id=medlemx.medlem_uddinst AND medlemx.medlem_id=medlemmer.id AND medlem_fornavn LIKE '%Anders%' ORDER BY medlemmer.medlem_fornavn, medlemmer.medlem_efternavn, medlemx.medlem_oprettet DESC
Avatar billede prec Nybegynder
04. november 2004 - 12:51 #2
GROUP BY medlemx.medlem_id
Avatar billede prec Nybegynder
04. november 2004 - 12:51 #3
der skal du så vidt jeg husker dog fjerne din ORDER BY, man kan ik have begge dele
Avatar billede straszek Praktikant
04. november 2004 - 12:57 #4
HVis jeg bruger group by, så vælger den automatisk den først forkomst, hvad nu hvis jeg vil have at den skal vælge den sidste forkomst?
Avatar billede prec Nybegynder
04. november 2004 - 13:03 #5
Prøv at smid en DESC på, mener jeg at man kan
Avatar billede straszek Praktikant
04. november 2004 - 13:08 #6
Det gør ingen forskel desværre
Avatar billede jaw Nybegynder
04. november 2004 - 13:45 #7
Man kan godt bruge ORDER BY og GROUP BY i samme forespørgsel, rækkefølgen skal bare være rigtig. Kan dog ikke lige huske, om det er GROUP BY eller ORDER BY der skal stå først. Og DESC havde du jo brugt i dit eget eksempel, prøvet ASC?

Og det du mener er, at du nu får id'erne ud i rækkefølgen:
1
2
3
og du vil have:
3
2
1
i stedet?
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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