Ja dat is dus een beetje lastig, dat dacht ik al. Beetje moeilijke vraag ook. Maar ik zit me namelijk af te vragen hoe ik alles het beste in kan delen, en probeer dus een beetje een punt te hebben om naar te streven, een maximaal aantal queries dus. Op zich werkt het nu wel goed, maar ik heb nu 6 queries in het script en heb geen flauw idee of dat te veel is.
Het gaat erom dat ik met 3 queries voor een voorpagina 3x10 titels uit 3 verschillende tabellen (nieuws, recensies, features) trek voor een updatemenutje. Dan moet ik tevens nog wat headlines hebben, die ook weer uit een andere tabel komen, en daarvoor ook weer info uit de 3 tabellen moet hebben (headline table bevat dus de id's van de nieuwsitems/recensies/features als foreign keys dus de titels moet ik nog erbij hebben). Ik zal een beetje de situatie proberen uit te leggen.
Ik heb dus de 3 tabellen nieuws, recensies en features. Dan de headline tabel die er zo uit ziet:
headlineID
itemType
itemID
isMain
headlineID is dus gewoon de ID van de row in deze tabel, itemType is een ENUM 1,2 of 3 en staat voor of het een nieuwsitem, recensie of feature betreft, itemID is de ID van desbetreffende item, en als isMain = 1, dan komt die headline bovenaan de pagina (als een soort extra belangrijke headline).
Nu is het punt dus dat ik als ik de headlines opvraag, dat per itemType moet doen, omdat ik de titels niet in de headline tabel wil opslaan, maar gewoon uit de nieuws/recensie/feature tabel wil trekken met een join. Dus eerst vraag ik de headlines op WHERE itemType = '1' met een join naar de nieuws tabel, dan WHERE itemType = '2' met een join naar de recensie tabel en dan de headlines voor de features. Maar nu zit ik dus al aan 3 queries.
Ik heb eraan zitten denken om de titels voor de headlines uit de queries voor het updatemenutje te halen, alleen die pakken de laatste 10 (SELECT recensieID, recensieTitle FROM recensieGegevens LIMIT 10 zegmaar), en ik wil er wel rekening mee houden dat de headlines niet persé één van de laatste 10 entries hoeven te zijn.
Ik heb eigenlijk geen betere manier kunnen bedenken om het te doen. Iemand ideetjes?