Tabel opmaken vanuit 3 tabellen uit Mysql

Status
Niet open voor verdere reacties.

thapriest

Gebruiker
Lid geworden
28 okt 2009
Berichten
559
Een breinbreker, voor mij dan:)

Ik wil een tabel opmaken met data vanuit MySql(3 verschillende tabellen).
De tabel moet worden waar arke bijv. http://www.arke.nl/zonvakantie/curacao/curacao/willemstad/avila/prijzen.aspx zo zijn prijzen neerzet.

Ik heb dan een tabel met de verschillende periodes/vertrekdata, een tabel waar je de kamertypes hebt staan met hun beschrijvingen etc en een tabel waarin de verschillende prijzen staan en voor hoeveel personen dat is.

Uiteraard zijn ze allemaal gekoppeld aan elkaar middels id's.

Hoe ik de data nu in een tabel krijg zoals arke dat doet, daar loop ik op vast. Iemand een tip/idee/pointer?
 
Volgens mij ben je dan beter af in het SQL forum, maar ok. Wat lukt er precies niet? de join ?

Meestal helpt het even om voor jezelf de stappen uit te spreken. Als je er niet uitkomt mis je waarschijnlijk een tabel :p

Overigens wel grappig dat je dit voorbeeld neemt, omdat ik een van de database beheerders daar persoonlijk ken :)
 
Nou ja, ik wil hem met behulp van PHP/HTML op het scherm toveren, dus ik dacht php;)

Wat er niet lukt, en dat is omdat ik iets niet snap en/of de logica van zie, ik heb een tabel waar links de kamers staan en bovenin de data. Ik begrijp nu niet hoe ik de juiste prijzen onder de juiste data ga krijgen want ik moet dan 2x een <td> met $row->prijs vullen of vaker, afhankelijk van hoeveel periodes of vertrekdata.
 
Laatst bewerkt:
Ik heb nu dit:

PHP:
<?php

   //hier haal ik de acco id op om de juiste kamertypes en dergelijke te pinpointen
	$select_acco = "SELECT id FROM accomodations WHERE alias = '".$_GET['alias']."'" ;
	$result_acco = mysql_query($select_acco);
	$row1 = mysql_fetch_object($result_acco);

$content .='
<table  id="rounded-corner">
<thead>
<tr><th class="rounded-company" width="65px"><strong>Kamertype</strong></th><th class="rounded"><strong>Personen</strong></th>';

	//hier fetch ik de periodes
	$sql="SELECT * FROM acco_periodes WHERE accoId='".$row1->id."' ORDER BY sort";
	$result = mysql_query($sql);
		while($row = mysql_fetch_object($result)){
		


$content .='
<th class="rounded"><strong>'.$row->periode.'</strong>'; 
}
$content .='
</tr><tfoot>
    	<tr>
        	<td colspan="3" class="rounded-foot-left"><em>*Prijzen onder voorbehoud.</em></td>
        	<td class="rounded-foot-right"> </td>
        </tr>
    </tfoot></thead><tbody>';
	//hier join en haal ik alles op
	$sql="SELECT room_prices.prijs, room_prices.persoon, rooms.naam FROM room_prices INNER JOIN rooms ON room_prices.idRoom=rooms.id JOIN acco_periodes ON room_prices.idPeriod=acco_periodes.id WHERE acco_periodes.id='15' GROUP BY rooms.naam, room_prices.persoon";
	$result = mysql_query($sql);
		while($row = mysql_fetch_object($result)){
	
		$content .= '<tr><td><strong>'.$row->naam.'</strong></td><td>'.$row->persoon.' pers.</td><td>'.$row->prijs.'</td><td></td></tr>';
		

}
$content .='</tbody></table>';


echo  $content;
?>
 
in principe is er ook niets mis met twee tabellen handmatig samenvoegen.

het resultaat van een matrix is: "select" kolommen, "where" de rijen. (eventueel kun je dit natuurlijk ook omdraaien)
Als je niet de specifieke data kan "selecten" kun je de volledige oplossing niet direct maken. Een andere oplossing is dan vaak eerst een tabel creëren met een subselect en/of stored procedure en vervolgens daar dan weer mee verder gaan.
 
waarom gebruik je niet een innerjoin, dan hoef je maar 1 query uit te voeren en je hebt gelijk je data
 
@ Wampier:

Dat is het hem juist, ik kan de data wel selecten maar ik krijg het niet op de juiste plek.
Ik wil dus de juiste prijzen onder de juiste data. Het kan tot 5 diverse data oplopen en daar loop ik vast, want 1 datum dat lukt me al wel, maar hoe ik vertel dat ik de prijzen behorend bij de data die in de <tr> erboven staat daar neer moet zetten, geen idee.

Ik doe iets niet goed in de opbouw of ik doe iets niet, maar wat?

@ Phobia
Zie regel 31 ;)
 
Ik heb nu dit, voor elke periode maakt hij een tabel aan, en geeft daarin prijzen weer. Nu zou ik nog graag de tabellen samenvoegen tot 1 tabel met alle data en prijzen erin.

Iemand een idee?

PHP:
<?php

   //hier haal ik de acco id op om de juiste kamertypes en dergelijke te pinpointen
	$select_acco = "SELECT id FROM accomodations WHERE alias = '".$_GET['alias']."'" ;
	$result_acco = mysql_query($select_acco);
	$row1 = mysql_fetch_object($result_acco);

	
	$select_periods="SELECT * FROM acco_periodes WHERE accoId='".$row1->id."' ORDER BY sort";
	$result_periods = mysql_query($select_periods);
		while($row1 = mysql_fetch_object($result_periods)){
	
			$content .='
			<table  id="rounded-corner">
			<thead>
			<tr><th class="rounded-company" width="65px"><strong>Kamertype</strong></th><th class="rounded"><strong>Personen</strong></th><th class="rounded"><strong>'.$row1->periode.'</strong></th></tr></thead><tbody>';
			
$content .='
	<tfoot>
    	<tr>
        	<td colspan="2" class="rounded-foot-left"><em>*Prijzen onder voorbehoud.</em></td>
        	<td class="rounded-foot-right"> </td>
        </tr>
    </tfoot>';
	
	//hier fetch ik de periodes
		$sql="SELECT room_prices.prijs, room_prices.persoon, rooms.naam FROM room_prices INNER JOIN rooms ON room_prices.idRoom=rooms.id WHERE room_prices.idPeriod='".$row1->id."' GROUP BY rooms.naam, room_prices.persoon, room_prices.prijs ";
		$result = mysql_query($sql);
		while($row = mysql_fetch_object($result)){
		
		

	
				
		$content .= '<tr><td>'.$row->naam.'</td><td>'.$row->persoon.'<td>'.$row->prijs.'</td></tr>';
		
		}	

	}

$content .= '</tbody></table>';

echo  $content;
?>
 
Niemand een idee? Ik ben toch niet stiekem aan geheime raketwetenschap begonnen? :p

Ik ben er inmiddels achter(denk ik) dat ik pivot tables moet maken, maar enige uitleg ontbreekt in Google.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan