Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Kahden tietokantakyselyn yhdistäminen

villev [27.04.2010 15:52:38]

#

Hei! Olen jo pitkään miettinyt ratkaisua seuraavaan ongelmaan:

Eli minulla on tiedosto rss.php, joka hakee tietokannasta vaikkapa taulusta uutiset kaikki tarvittavat tiedot ja tulostaa ne yksi kerrallaan rss-muodossa. Miten kannattaisi toteuttaa, jos haluaisin vaikka tiedot taulusta uutiset ja taulusta kommentit ja tulostaa ne samaan rss-tiedostoon?

Olen ajatellut, että kätevien tapa olisi varmaan jotenkin laittaa kaikki tiedostot array:hin ja sortata, mutten vain keksi miten. Vinkkejä?

Grez [27.04.2010 20:21:02]

#

Itse hakisin ensin uutiset taulukkoon ja sitten kommentteja hakiessa laittaisi ne oikeiden uutisten tietoihin siihen uutistaulukkoon ja lopuksi vaan tulostaisi.

Siis runko olisi jotain tähän tyyliin:

<?
	//availlaan tietokanta ja tehdään kysely uutisiin
	while ($uutinen = mysql_fetch_assoc($reso)) {
		$id = $uutinen['id'];
		$uutiset[$id] = $uutinen;
	}

	//suljetaan edellinen resurssi ja avataan kysely kommentteihin
	while ($kommentti = mysql_fetch_assoc($reso)) {
		$id = $kommentti['uutinen'];
		$uutiset[$id]['kommentit'][] = $kommentti;
	}

	foreach ($uutiset as $uutinen) {
		//Tehdään uutisen otsikoiden tulostukset
		foreach ($uutinen['kommentit'] as $kommentti) {
			//Tehdään kommentin tulostukset
		}
	}
?>

villev [27.04.2010 20:57:49]

#

Kiitos, juuri jotain tuon tapaista haeskelinkin.

Mutta miten kannattaisi tehdä, jos on kaksi täysin samanlaista taulua, esim. uutiset ja artikkelit, ja haluaisi tehdä näistä yhdistetyn kyselyn?

Grez [27.04.2010 20:59:27]

#

SQL:ssä on sellainen avainsana kuin UNION. Mutta jos taulut on täsmälleen samanlaisia rakenteeltaan, niin miksi niitä on kaksi?

villev [28.04.2010 14:50:53]

#

Jees, kiitokset vinkistä. Tuollahan tuo menee helposti ^^.

Taulut eivät ole tismalleen samanlaisia, vaan ainoastaan RSS-syötteeseen tarvittavat osat ovat samanlaisia.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta