Hoe kan ik deze twee queries combineren (ivm de traagheid meer dan 5000 rows…)?

SELECT p.products_id, p.products_wholesale_price, pd.products_name, p.products_price, l.name, m.manufacturers_name
FROM products p, manufacturers m, products_description pd, languages l
WHERE p.products_id = pd.products_id AND p.products_id = pd.products_id AND l.languages_id = pd.language_id AND m.manufacturers_id = p.manufacturers_id AND pd.language_id = '" . (int)$languages_id . "'
ORDER BY m.manufacturers_name, pd.products_name ASC";

Deze geeft een lijst van alle producten met prijs en naam, gesorteerd op merk


SELECT `qtynew`
FROM `voorraad`
WHERE `product_id` = p.products_id (uit de bovenstaande query)
AND qtynew > '0'
ORDER BY `voorraad_id` desc limit 0,1";

Deze query moet dus de meest recente 'qtynew' pakken die bekend is van een bepaald product_id


De volgende query heb ik in elkaar gezet maar geeft wel resultaten maar pakt niet de meest recente 'qytnew'...

SELECT p.products_id, p.products_wholesale_price, m.manufacturers_name, pd.products_name, p.products_price, v.qtynew
FROM voorraad v, manufacturers m, products p, products_description pd, languages l, voorraad v
WHERE p.products_id = pd.products_id AND v.product_id = p.products_id and p.products_id = pd.products_id and l.languages_id = pd.language_id and m.manufacturers_id = p.manufacturers_id and pd.language_id = '" . (int)$languages_id . "' and v.qtynew > '0'
GROUP BY v.product_id
ORDER BY m.manufacturers_name, pd.products_name, v.voorraad_id ASC";

Ik hoop dat iemand mij verder kan helpen!

Alvast bedankt!
hoe zien je databases/tabbellen eruit?

probeer dit eens: mysql_query ("SELECT * FROM 'voorraad' ORDER BY qtynew DESC LIMIT 0,1");
deze pakt de laatste regel qtynew uit tabel voorraad

maar weet niet of je de hele regel moet hebben en hoe je tabel eruit ziet
Zoals je aan mijn twee query's kan zien gaat het hier om 5 verschillende tabellen waar ik gegevens uit haal.
De twee query's die ik heb vermeld, werken alle twee goed. Maar als ik ze in PHP achter elkaar laat uitvoeren, dan kost dat heel veel tijd... en is er regelmatig een timeout.
Ik zoek nu een manier om die twee query's te combineren tot 1 zodat de DB minder belast wordt.
waarom heb je 5 tabbellen?
je kan toch 1 tabel maken met alle info in 1 keer erin
maakt het makkelijker voor jezelf en sneller

5000 rows zeg je??? als je de 5 tabbellen in 1 maakt heb je er 1000 scheelt nogal denk ik zo
Een voorraadtabel (incl, geschiedenis) kan je niet in een producttabel plaatsen, dat gaat gewoon niet... en een lijst met merknamen ook niet.
Maar al deze tabellen zijn wel gerelateerd aan elkaar middels bijvoorbeeld een product_ID of merk_ID.
hoe zien je tabbellen eruit dan?
je kan gewoon meerdere query's uitvoeren achter elkaar.
weet niet hoe je het allemaal op je pagina zet?
maar kun je voor het overzicht niet beter om te beginnen
vars gebruiken?
Staat er in de voorraad tabel ook een datum?
Dan kan je dit doen (ingekort)

SELECT p.product_id, v.qtynew, MAX(v.ch_date) chdate
FROM products
JOIN voorraad ON p.product_id AND qtynew > 0
GROUP BY p.product_id, v.qtynew HAVING v.ch_date = chdate

Er is geen datum in de voorraad tabel maar wel een uniek, oplopend ID (voorraad_id).
Ik ga eens met jouw code aan de slag, want ik neem aan dat die MAX ook werkt met een ID...
Bedankt!

[size=xsmall]Toevoeging op 31/01/2013 17:12:13:[/size]

Ik kwam op het volgende (maar geeft een foutmelding "invalid use of group function)

SELECT MAX(voorraad_id) vID, p.products_id, p.products_wholesale_price, m.manufacturers_name, pd.products_name, p.products_price, v.qtynew
FROM manufacturers m, products p, products_description pd, languages l, voorraad v
WHERE v.voorraad_id = MAX(voorraad_id) AND p.products_id = pd.products_id AND v.product_id = p.products_id and p.products_id = pd.products_id and l.languages_id = pd.language_id and m.manufacturers_id = p.manufacturers_id and pd.language_id = '" . (int)$languages_id . "' and v.qtynew > '0' AND p.products_id = v.product_id AND v.product_id = p.products_id
GROUP BY v.product_id
ORDER BY m.manufacturers_name, pd.products_name, v.voorraad_id ASC

Reageren