Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyświetlenie zapytania MySQL wykorzystującego aliasy.
Bosmanircx
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 8.11.2006

Ostrzeżenie: (0%)
-----


Mam problem z wyświetlaniem rezultatu zapytania MySQLowego. Na pierwszy rzut oka sprawa banalna. A jednak.

Mam 2 tabele (Dla ułatwienia tabele razem z danymi):

Tabela A.
  1. CREATE TABLE `tabA` (
  2. `ida` int(5) NOT NULL AUTO_INCREMENT,
  3. `war1` int(5) NOT NULL,
  4. `war2` int(5) NOT NULL,
  5. `war3` int(5) NOT NULL,
  6. PRIMARY KEY (`ida`)
  7. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;
  8.  
  9. INSERT INTO `tabA` (`ida`, `war1`, `war2`, `war3`) VALUES
  10. (1, 1, 2, 3),
  11. (2, 2, 2, 1),
  12. (3, 3, 1, 1),
  13. (4, 3, 2, 3);


Tabela B.
  1. CREATE TABLE `tabB` (
  2. `idb` int(5) NOT NULL AUTO_INCREMENT,
  3. `warx` varchar(2) NOT NULL,
  4. PRIMARY KEY (`idb`)
  5. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;
  6.  
  7. INSERT INTO `tabB` (`idb`, `warx`) VALUES
  8. (1, 'a'),
  9. (2, 'b'),
  10. (3, 'c'),
  11. (4, 'd');


Moje zapytanie.
  1. SELECT `tabA`.`ida` , `tabA`.`war3` , `tabB`.`warx` , `tabA`.`war1` , `tabA`.`war2` , `tabB_1`.`warx` , `tabB_2`.`warx`
  2. FROM `intranet`.`tabB` `tabB_2`
  3. RIGHT OUTER JOIN (`intranet`.`tabB` `tabB_1`
  4. RIGHT OUTER JOIN (`intranet`.`tabB` `tabB`
  5. RIGHT OUTER JOIN `intranet`.`tabA` `tabA` ON `tabB`.`idb` = `tabA`.`war1`
  6. ) ON `tabB_1`.`idb` = `tabA`.`war2`
  7. ) ON `tabB_2`.`idb` = `tabA`.`war3`

Zapytanie jest na 100% dobre ponieważ po wykonaniu go np w phpMyAdmin działa super.


Rezultat, który chce uzyskać.

id 1,00
1,00 a
2,00 b
3,00 c

id 2,00
2,00 b
2,00 b
1,00 a

id 3,00
3,00 c
1,00 a
1,00 a

id 4,00
3,00 c
2,00 b
3,00 c


Strona z zapytaniem.


  1. mysql_select_db($database_intanet, $intanet);
  2. $query_Recordset1 = "SELECT `tabA`.`ida` , `tabA`.`war3` , `tabB`.`warx` , `tabA`.`war1` , `tabA`.`war2` , `tabB_1`.`warx` , `tabB_2`.`warx` FROM `intranet`.`tabB` `tabB_2` RIGHT OUTER JOIN ( `intranet`.`tabB` `tabB_1` RIGHT OUTER JOIN ( `intranet`.`tabB` `tabB` RIGHT OUTER JOIN `intranet`.`tabA` `tabA` ON `tabB`.`idb` = `tabA`.`war1` ) ON `tabB_1`.`idb` = `tabA`.`war2` ) ON `tabB_2`.`idb` = `tabA`.`war3`";
  3. $Recordset1 = mysql_query($query_Recordset1, $intanet) or die(mysql_error());
  4. $row_Recordset1 = mysql_fetch_assoc($Recordset1);
  5. $totalRows_Recordset1 = mysql_num_rows($Recordset1);
  6. ?>
  7.  
  8.  
  9. <table border="0">
  10.  <tr>
  11.    <td>ida</td>
  12.    <td>war3</td>
  13.    <td>warx</td>
  14.    <td>war1</td>
  15.    <td>war2</td>
  16.    <td>warx</td>
  17.    <td>warx</td>
  18.  </tr>
  19.  <?php do { ?>
  20.    <tr>
  21.      <td><?php echo $row_Recordset1['ida']; ?></td>
  22.      <td><?php echo $row_Recordset1['war3']; ?></td>
  23.      <td><?php echo $row_Recordset1['warx']; ?></td>
  24.      <td><?php echo $row_Recordset1['war1']; ?></td>
  25.      <td><?php echo $row_Recordset1['war2']; ?></td>
  26.      <td><?php echo $row_Recordset1['warx']; ?></td>
  27.      <td><?php echo $row_Recordset1['warx']; ?></td>
  28.    </tr>
  29.    <?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); ?>
  30. </table>
  31. <?php
  32. mysql_free_result($Recordset1);
  33. ?>


Problem
  1. <?php echo $row_Recordset1['warx']; ?>
- wyświetla pierwszą dana. Nie wiem jak wyświetlić pozostałe "warx". Przez to że w zapytaniu tworzone były aliasy, mam 3 zmienne o nazwie "warx".
próbowałem wywoływać je podajac dodatkowo alias tabeli czyli:
  1. <?php echo $row_Recordset1['tabB'.'warx']; ?>
  2. <?php echo $row_Recordset1['tabB_1'.'warx']; ?>
  3. <?php echo $row_Recordset1['tabB_2'.'warx']; ?>


Oczywiście nie dało to pożądanego rezultatu.
Jak wyświetlić "warx" z tabeli "tabB", "warx" z tabeli "tabB_1", "warx" z tabeli "tabB_2"?
Z cała pewnością da się wyświetlić wszystkie dane z zapytania tylko moja wiedza jest zbyt płytka.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Widze obce są Ci obyczaje na forum to przy okazji tego tematu krótkie wyjaśnienie:
1) żaden "Pan". My tu wszyscy na równi, tak więc wystarczy "nospor"
2)
Cytat
Widać od razu że mam do czynienia z fachowcem najwyższego szczebla.
Odpowiedź na proste pytanie nie czyni z nikogo fachowcem najwyższego szczebla. Na przyszłość zwykłe "Dziękuję" wystarczy, bez żadnych dodatkowych przymiotników (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

(IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 16.09.2025 - 16:19