ugrás a tartalomhoz

Három adattábla összekapcsolása

tiku I tikaszvince · 2006. Júl. 25. (K), 14.23
Szaisztok!

MySQL-ben (4.1) szeretnék 3 táblát összekapcsolni.
Az első táblában vannak a kiírandó adatok,
  1. CREATE TABLE  position (  
  2.   position_id int(10) unsigned NOT NULL auto_increment,  
  3. [...]  
  4.   PRIMARY KEY  (`position_id`)  
  5. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;  
a másik két táblából
  1. CREATE TABLE  pos_check (  
  2.   user_id varchar(50) NOT NULL default '',  
  3.   position_id int(10) unsigned NOT NULL default '0',  
  4.   check_in datetime NOT NULL default '0000-00-00 00:00:00',  
  5.   PRIMARY KEY  (user_id,position_id),  
  6.   KEY FK_pos_pos (position_id),  
  7.   CONSTRAINT FK_pos_pos FOREIGN KEY (position_id) REFERENCES position (position_id) ON DELETE CASCADE ON UPDATE CASCADE,  
  8.   CONSTRAINT FK_pos_user FOREIGN KEY (user_id) REFERENCES user (user_id) ON DELETE CASCADE ON UPDATE CASCADE  
  9. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;  
  10.   
  11. CREATE TABLE  test (  
  12.   postest_id int(10) unsigned NOT NULL default '0',  
  13.   question_id int(10) unsigned NOT NULL default '1',  
  14.   PRIMARY KEY  (postest_id,question_id)  
  15. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;  
valójában csak az adott rekordra vonatkozó sorok számát szeretném látni. (jelenleg a pos_check-ben 1, a test-ben 5 idevonatkozó sorom van). Minden jól működik, amíg a központi táblához csak egyik, vagy csak a másik táblát kapcsolom. Ha mindkettőből szeretném látni az adatot, akkor mindkettő COUNT 5-öt ad vissza.

Eddig erre jutottam:
  1. SELECT  
  2.   p.position_id, p.job_id, p.skills, p.test_ok,  
  3.   COUNT(t.question_id) AS questin_num,  
  4.   COUNT(pc.user_id) AS checked_in  
  5. FROM  
  6.   pos_check pc   
  7.   RIGHT JOIN position p USING (position_id)  
  8.   RIGHT JOIN test t ON p.position_id = t.postest_id  
  9. WHERE  
  10.   p.job_id = '2'  
  11.   AND filled IS NULL  
  12. GROUP BY p.position_id  
Lehetséges azt kapjam eredménynek amit szeretnék? Én arra gyanakszom, hogy a táblák kapcsolásával lehet valami baj, de már összes kapcsolási sorrendet kipróbáltam...

Köszi
Tiku