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.CREATE TABLE `tabA` (
`ida` int(5) NOT NULL AUTO_INCREMENT,
`war1` int(5) NOT NULL,
`war2` int(5) NOT NULL,
`war3` int(5) NOT NULL,
PRIMARY KEY (`ida`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;
INSERT INTO `tabA` (`ida`, `war1`, `war2`, `war3`) VALUES
(1, 1, 2, 3),
(2, 2, 2, 1),
(3, 3, 1, 1),
(4, 3, 2, 3);
Tabela B.CREATE TABLE `tabB` (
`idb` int(5) NOT NULL AUTO_INCREMENT,
`warx` varchar(2) NOT NULL,
PRIMARY KEY (`idb`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;
INSERT INTO `tabB` (`idb`, `warx`) VALUES
(1, 'a'),
(2, 'b'),
(3, 'c'),
(4, 'd');
Moje zapytanie.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`
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. mysql_select_db($database_intanet, $intanet);
$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`";
$Recordset1 = mysql_query($query_Recordset1, $intanet) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
?>
<table border="0">
<tr>
<td>ida</td>
<td>war3</td>
<td>warx</td>
<td>war1</td>
<td>war2</td>
<td>warx</td>
<td>warx</td>
</tr>
<?php do { ?>
<tr>
<td>
<?php echo $row_Recordset1['ida']; ?></td>
<td>
<?php echo $row_Recordset1['war3']; ?></td>
<td>
<?php echo $row_Recordset1['warx']; ?></td>
<td>
<?php echo $row_Recordset1['war1']; ?></td>
<td>
<?php echo $row_Recordset1['war2']; ?></td>
<td>
<?php echo $row_Recordset1['warx']; ?></td>
<td>
<?php echo $row_Recordset1['warx']; ?></td>
</tr>
</table>
<?php
?>
Problem <?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:
<?php echo $row_Recordset1['tabB'.'warx']; ?> <?php echo $row_Recordset1['tabB_1'.'warx']; ?> <?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.