Három adattábla összekapcsolása
Szaisztok!
MySQL-ben (4.1) szeretnék 3 táblát összekapcsolni.
Az első táblában vannak a kiírandó adatok,a másik két táblából 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ő
Eddig erre jutottam: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
■ MySQL-ben (4.1) szeretnék 3 táblát összekapcsolni.
Az első táblában vannak a kiírandó adatok,
- CREATE TABLE position (
- position_id int(10) unsigned NOT NULL auto_increment,
- [...]
- PRIMARY KEY (`position_id`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
- CREATE TABLE pos_check (
- user_id varchar(50) NOT NULL default '',
- position_id int(10) unsigned NOT NULL default '0',
- check_in datetime NOT NULL default '0000-00-00 00:00:00',
- PRIMARY KEY (user_id,position_id),
- KEY FK_pos_pos (position_id),
- CONSTRAINT FK_pos_pos FOREIGN KEY (position_id) REFERENCES position (position_id) ON DELETE CASCADE ON UPDATE CASCADE,
- CONSTRAINT FK_pos_user FOREIGN KEY (user_id) REFERENCES user (user_id) ON DELETE CASCADE ON UPDATE CASCADE
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
- CREATE TABLE test (
- postest_id int(10) unsigned NOT NULL default '0',
- question_id int(10) unsigned NOT NULL default '1',
- PRIMARY KEY (postest_id,question_id)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
COUNT
5-öt ad vissza.Eddig erre jutottam:
- SELECT
- p.position_id, p.job_id, p.skills, p.test_ok,
- COUNT(t.question_id) AS questin_num,
- COUNT(pc.user_id) AS checked_in
- FROM
- pos_check pc
- RIGHT JOIN position p USING (position_id)
- RIGHT JOIN test t ON p.position_id = t.postest_id
- WHERE
- p.job_id = '2'
- AND filled IS NULL
- GROUP BY p.position_id
Köszi
Tiku