[php/mysql]limit in join

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • simon
  • Registratie: Maart 2002
  • Laatst online: 19:38
Beste luitjes,

Ik ben bezig aan een cms, en daar heb je dus bepaalde categoriën 'nieuws', maar nu wil ik dat ze dus dus per categorie 5 headlines zien.

Nu gaat dat binnenhalen met een left join, maar stel dat ik dan limit 0, 25 doe, dan krijg ik er gewoon de nieuwste 25, ipv de nieuwste 5 per categorie.

Ik heb al heel wat afgezocht, maar ik weet niet helemaal hoe ik dit moet oplossen..

|>


Acties:
  • 0 Henk 'm!

  • bsbfx
  • Registratie: November 2001
  • Laatst online: 03-08 12:54
Je zou ervoor kunnen kiezen om de query gewoon op te splitsen in meerdere queries (dus 1 per categorie) je bewaard de uitkomst van elke query netjes in een array en je werkt vanuit die arrays verder.

Acties:
  • 0 Henk 'm!

  • simon
  • Registratie: Maart 2002
  • Laatst online: 19:38
bsbfx schreef op 30 oktober 2003 @ 20:58:
Je zou ervoor kunnen kiezen om de query gewoon op te splitsen in meerdere queries (dus 1 per categorie) je bewaard de uitkomst van elke query netjes in een array en je werkt vanuit die arrays verder.
Dat zou het geheel wel wat vertragen, en ik hoop eigenlijk dat het direct in de mysql query kan... Zo niet, dan heb ik enorme pech..

En daarnaast, stel ik doe die 2e query, waarin ik de gegeves voor de berichten uit de tabel haal, hoe zorg ik er dan voor dat het er 5 zijn per categorie? Want ik weet wel hoe ik ze dan allemaal kan sorteren, in arrays zetten enz, maar dan krijg je giga queries, en dat wil ik dus niet :)

[ Voor 27% gewijzigd door simon op 30-10-2003 21:08 ]

|>


Acties:
  • 0 Henk 'm!

  • Lentje
  • Registratie: Juni 2001
  • Laatst online: 12-09 17:04
Ik zit zelf ook met die probleem..

Ik kan gewoon een count maken in de while. Alleen hoe dan de query stoppen als hij een bepaald punt heeft bereikt?

Acties:
  • 0 Henk 'm!

Verwijderd

Lentje schreef op 30 oktober 2003 @ 22:18:
Ik zit zelf ook met die probleem..

Ik kan gewoon een count maken in de while. Alleen hoe dan de query stoppen als hij een bepaald punt heeft bereikt?
limit

Acties:
  • 0 Henk 'm!

  • Lentje
  • Registratie: Juni 2001
  • Laatst online: 12-09 17:04
Uh, ja dat snap ik wel. Alleen ik heb het zo opgebouwd:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<?
//query om de dagen op te halen
while ($dagen = mysql_fetch_assoc($query1)){
    $dag = date("d-m", $dagen['datum']);
    echo $dag;

    //nog een query voor de items per dag te weergeven
    while ($items = mysql_fetch assoc($query2)){
        echo $items['titel']."<br>";
        $i+1;
    }
}

Kijk, ik kan nu wel met limit gaan spelen. Alleen hoe krijg ik die in die 2 query's hierboven.

Acties:
  • 0 Henk 'm!

  • simon
  • Registratie: Maart 2002
  • Laatst online: 19:38
Lentje schreef op 30 oktober 2003 @ 22:23:
[...]


Uh, ja dat snap ik wel. Alleen ik heb het zo opgebouwd:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<?
//query om de dagen op te halen
while ($dagen = mysql_fetch_assoc($query1)){
    $dag = date("d-m", $dagen['datum']);
    echo $dag;

    //nog een query voor de items per dag te weergeven
    while ($items = mysql_fetch assoc($query2)){
        echo $items['titel']."<br>";
        $i+1;
    }
}

Kijk, ik kan nu wel met limit gaan spelen. Alleen hoe krijg ik die in die 2 query's hierboven.
Joins maybe...

Ik denk dat ik het zo ga oplossen;

Ik maak een nieuwe tabel, met daarin alle active, daarin zet ik dus de id, idvancategorie, idvanbericht, en elke keer dat er nieuw bericht vervang ik deze groep (per categorie) door de nieuwe..

Hmm, ik hoor net UNION maar helaas is dat alleen voor 4.00 en ik wil ook 4.00 < support hebben.. Dus geen union...

[ Voor 11% gewijzigd door simon op 31-10-2003 15:09 ]

|>


Acties:
  • 0 Henk 'm!

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 15-09 18:24

dusty

Celebrate Life!

Of het wel of niet kan in mysql hang van je versie van mysql af.. heb je een versie die subqueries en union ondersteunt kan je het wel binnen een query doen.

Ik schat dat de methode van lentje zelfs trager zal zijn dan de queries allemaal apart af te vuren op de database. Dit omdat de gehele query wordt gedaan op de sql-server, dat niet alle resultaten wordt opgehaald betekent niet dat de database deze niet zal opzoeken!

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR

Pagina: 1