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