ugrás a tartalomhoz

több (3) táblából történő lekérdezés (drupal5)

mhn · 2009. Már. 2. (H), 19.05
sziasztok!

van egy weboldalam, ahol különböző anyagokat lehet letölteni.
a következőképpen vannak tárolva az anyagok: (drupal 5 cms-ről van szó)
NODE tábla:
nid,type,title,status oszlopok kellenek

CONTENT_TYPE_PRODUCT tábla:
nid,product_id,area oszlopok kellenek

a táblákból így kérdeztem le az adatok:
$query = "SELECT n.nid, n.title, n.status, p.field_updatetime_value, p.field_area_value, p.field_product_id_value
FROM node n INNER JOIN content_type_product p
USING(nid)
".$conditionsString." ".tablesort_sql($header);


ez eddig rendben is van, viszont szeretnék vhogy beletenni ebbe a listába egy oszlopot ami azt mutatná, h melyik anyagot hányszor töltötték le.
viszont ez egy 3. (DOWNLOADS) táblában van tárolva.

DOWNLOADS tábla:
id,nid,timestamp
itt minden sor 1-1 letöltés, szval a COUNT(nid) kellene nekem, és ezt szeretném egy új oszlopként megjeleníteni.

2 lépésben megoldottam:
amikor a fenti query eredmémyét fetch_object-el feldolgozom, minden körben csinálok egy sima SELECT COUNT(nid) FROM downloads WHERE ... lekérdezést.

a probléma az, h az eredményt egy rendezhető táblázatban jeleníti meg, és amikor a "letöltések száma" oszlop szerint rendezném, akkor leakad, mert az eredeti query-ben nincs "letöltések száma" oszlop.

tehát a kérdés az lenne, h van vmi mód arra, h 3 különböző táblából kérdezzek le adatok egy query-ben?

előre is köszönöm!
 
1

Ha kettőből megy

Poetro · 2009. Már. 2. (H), 21.41
Amint látom, kettő táblából megy, akkor nem tudom, mi akadályoz meg, hogy a 3-ból menjen.

Amennyiben nem megy, akkor kérlek valami kézzelfoghatóbb infót írj, mert amit leírtál az számomra nem egy egész.
2

Valami ilyesmi?

Roberto · 2009. Már. 3. (K), 10.37
Ha jól értem, akkor valami ilyesmire lenne szükséged:

SELECT 
  n.nid, 
  n.title, 
  n.status, 
  p.field_updatetime_value, 
  p.field_area_value, 
  p.field_product_id_value,
  count(d.id) as downloads
FROM 
  node n 
  INNER JOIN content_type_product p USING(nid)
  LEFT JOIN downloads d USING(nid)
GROUP BY
  n.nid,
  n.title, 
  n.status, 
  p.field_updatetime_value, 
  p.field_area_value, 
  p.field_product_id_value;
3

köszönöm a segítséget, úgy

mhn · 2009. Már. 3. (K), 12.34
köszönöm a segítséget, úgy néz ki, h így ok a dolog.
igazából azzal nem voltam tisztában, h 2nél több táblát lehet e JOINolni, és ha igen hogyan.
(guglival rákerestem de mindehol csak 2 tábla összekapcsolását találtam
de valszeg az én figyelmetlenségem miatt nem találtam példát)
szval kösz még1x
további szép napot :)