Avatar billede syswatch Novice
22. december 2006 - 11:05 Der er 5 kommentarer og
1 løsning

Trække alt ud med brug af DISTINCT

Hejsa..
Jeg har lige et spørgsmål som jeg søger svar på.
Jeg har en tabel med 4 felter i.

Jeg vil gerne trække alt ud af tabellen, men kun dem hvor felt2 er forskellige fra de andre.

Jeg vil gerne have noget alla det her:
SELECT * FROM tabel DISTINCT felt2  WHERE active = 1

Skal trække alle felterne i databasen ud, men bare ikke hvis værdien af felt2 allerede er trukket ud 1 gang.
Hvordan skriver man dette rigtigt ?
Avatar billede coderdk Praktikant
22. december 2006 - 11:07 #1
Prøv:

SELECT * FROM tabel WHERE active = 1 GROUP BY felt2
Avatar billede syswatch Novice
22. december 2006 - 11:12 #2
coderdk: Yes, det gjorde det.. smider du et svar ?
Avatar billede syswatch Novice
22. december 2006 - 11:15 #3
coderdk: Kan man lave det på en lidt anden måde ?

Sådan at hvis der er flere forekomster af felt 2 så skal den vælge 1 tilfældig af dem ? For at gøre det hele lidt mere dynamisk ?
Avatar billede coderdk Praktikant
22. december 2006 - 11:48 #4
Der er ikke lige en SQL-måde jeg kan komme i tanker om. Du kunne måske prøve at lave det programmatisk, altså hive alle rækker ud, og så udvælge en tilfældig af dem med en bestemt værdi i felt2. Her er et eksempel på hvordan det kunne gøres:

$sql = "SELECT * FROM tabel WHERE active = 1 ORDER BY felt2";
$qh = mysql_query( $sql ) or die( mysql_error() );
$res = array();
while ( $row = mysql_fetch_assoc( $qh ) )
{
  if ( !array_key_exists( $row['felt2'], $res ) )
  {
      $res[$row['felt2']] = array();
  }
  $res[$row['felt2']][] = $row;
}
foreach ( $res as $rows )
{
  $row = array_rand( $rows );
  echo "<pre>"; var_dump( $row ); echo "</pre>";
}
Avatar billede coderdk Praktikant
22. december 2006 - 11:49 #5
foreach ( $res as $rows )
{
  $row = array_rand( $rows );
  echo "<pre>"; var_dump( $row ); echo "</pre>";
}

skal nok være:

foreach ( $res as $felt2 => $rows )
{
  $row = array_rand( $rows );
  echo "<pre>"; var_dump( $row ); echo "</pre>";
}
Avatar billede coderdk Praktikant
22. december 2006 - 11:49 #6
For lige at forklare, så skriver jeg bare hele array-strukturen ud med:

echo "<pre>"; var_dump( $row ); echo "</pre>";

Du kan naturligvis tilgå felterne med $row['feltnavn'] osv 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

Seneste spørgsmål Seneste aktivitet
I går 10:21 Ny printer, men hvilken Af mort1 i Printere
13/0819:41 USB på Linux Af Uvanga i Linux
12/0818:26 Hvilken type mus Af mort1 i PC
11/0813:21 ms Forms Af leahcim i Andet software
10/0821:30 Blokeret på Snapchat? Af LineP i Chat & Messaging