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:
  1. SELECT   
  2.   n.nid,   
  3.   n.title,   
  4.   n.status,   
  5.   p.field_updatetime_value,   
  6.   p.field_area_value,   
  7.   p.field_product_id_value,  
  8.   count(d.id) as downloads  
  9. FROM   
  10.   node n   
  11.   INNER JOIN content_type_product p USING(nid)  
  12.   LEFT JOIN downloads d USING(nid)  
  13. GROUP BY  
  14.   n.nid,  
  15.   n.title,   
  16.   n.status,   
  17.   p.field_updatetime_value,   
  18.   p.field_area_value,   
  19.   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 :)