Avatar billede delphin Nybegynder
29. april 2007 - 17:25 Der er 3 kommentarer og
1 løsning

Behandle resultat af mysql join forespørgsel

Jeg vil gerne lave følgende forespørgsel til mysql database:

$query="SELECT a.*, b.* from table1 a, table2 b WHERE a.id=b.id";

Jeg bruger noget i stil med dette for at få data ud:

  $result = mysql_query($query) or die(mysql_error());

  $TotalRows = mysql_num_rows($result);
  for ( $i = 0; $i < $TotalRows; ++$i )
  {
    $results[$i] = mysql_fetch_array($result);
  };

Normalt vil man så kunne bruge resultatet således:

echo $results[$i]['id'];

Problemet er at hvis et bestemt kolonnenavn (her "id") optræder i begge tabeller så er det vel nødvendigt at skrive:

echo $results[$i]['a.id'];
echo $results[$i]['b.id'];

Men jeg synes ikke umiddelbart det virker. Jeg har fundet følgende løsning:

http://dk2.php.net/manual/en/function.mysql-fetch-array.php#66280

men det synes jeg kun virker for første post - altså for:

echo $results[0]['a.id'];
echo $results[0]['b.id'];

Nogle der kan give mig de 2 magiske linjeres kode der gør det jeg gerne vil? :-)
Avatar billede windcape Praktikant
29. april 2007 - 17:36 #1
svaret er simpelt, det kan ikke lade sig gøre.
Avatar billede windcape Praktikant
29. april 2007 - 17:37 #2
men du kan bruge SQL keywordet AS , http://dev.mysql.com/doc/refman/5.0/en/select.html

he AS keyword is optional when aliasing a select_expr. The preceding example could have been written like this:

SELECT CONCAT(last_name,', ',first_name) full_name
  FROM mytable ORDER BY full_name;

However, because the AS is optional, a subtle problem can occur if you forget the comma between two select_expr expressions: MySQL interprets the second as an alias name. For example, in the following statement, columnb is treated as an alias name:

SELECT columna columnb FROM mytable;

For this reason, it is good practice to be in the habit of using AS explicitly when specifying column aliases.
Avatar billede delphin Nybegynder
29. april 2007 - 18:25 #3
Sjovt/mærkeligt at man ikke kan gøre det... men ok - jeg kan bare bruge "AS" som du siger.

Smid et svar - så får du point - mange tak for hjælpen :-)
Avatar billede windcape Praktikant
29. april 2007 - 20:41 #4
Det er overhovedet ikke mærkeligt, fordi SQL returnere data'en sådan. PHP henter den bare.
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