Kompliceret JOIN-query - muligt med én eller flere små?
Hej eksperterJeg har en lidt kompliceret forespørgsel, som jeg ikke rigtigt kan få til at makke ret, så nu prøver jeg her! Jeg er lidt i tvivl om jeg overhovedet skal forsøge at trække informationen ud i én forespørgsel eller om jeg skal bruge flere små!
Her er tabelstrukturerne for de fire involverede tabeller:
CREATE TABLE `usr_project_categories` (
`id` int(3) unsigned NOT NULL auto_increment,
`snr` tinyint(5) unsigned NOT NULL default '0',
`title` varchar(255) NOT NULL default '',
`titleurlfriendly` varchar(255) NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM;
CREATE TABLE `usr_projects` (
`id` tinyint(3) unsigned NOT NULL auto_increment,
`catid` tinyint(3) unsigned NOT NULL default '0',
`snr` tinyint(5) unsigned NOT NULL default '0',
`title` varchar(255) NOT NULL default '',
`description` text NOT NULL,
`url` varchar(255) NOT NULL default '',
PRIMARY KEY (`id`),
KEY `categoryid` (`catid`)
) TYPE=MyISAM;
CREATE TABLE `usr_staff_details` (
`id` tinyint(3) unsigned NOT NULL auto_increment,
`snr` tinyint(3) unsigned NOT NULL default '0',
`active` tinyint(3) unsigned NOT NULL default '1',
`firstname` varchar(255) NOT NULL default '',
`lastname` varchar(255) NOT NULL default '',
`title_da` varchar(255) NOT NULL default '',
`title_en` varchar(255) NOT NULL default '',
`email` varchar(255) NOT NULL default '',
`phone` varchar(255) NOT NULL default '',
`imagesrc` varchar(255) NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM;
CREATE TABLE `usr_staff_projects` (
`pid` tinyint(3) unsigned NOT NULL default '0',
`snr` tinyint(3) unsigned NOT NULL default '0',
`idproject` tinyint(3) unsigned NOT NULL default '0',
PRIMARY KEY (`pid`,`idproject`)
) TYPE=MyISAM;
?>
Feltet usr_projects.catid refererer til usr_project_categories.id, mens feltet usr_staff_projects.idproject refererer til usr_projects.id og usr_staff_projects.pid refererer til usr_staff_details.id.
Udgangspunktet for forespørgslen er et medarbejderid - dvs. en værdi for feltet usr_staff_details.id/usr_staff_projects.pid. Jeg ønsker en liste med alle poster i usr_projects - den skal indeholde:
usr_projects.id
usr_projects.title
usr_project_categories.title
0/1 - afhængig af om det aktuelle projektid er med i usr_staff_projects for den aktuelle medarbejder.
0/1 - afhængig af om navnet på medarbejderen indgår i projektbeskrivelsen, dvs. noget i retning af CONCAT('%', usr_staff_details.firstname, ' ', usr_staff_details.lastname, '%') LIKE usr_projects.description
Ovenstående beskriver vist meget godt problemstillingen, men det ville da næsten være mærkeligt, hvis det også giver mening for andre end mig, så spørg endelig, hvis der tvivl om noget!
Jeg håber, at nogen kan hjælpe med at strikke noget brugbart sammen. Jeg overvejer også om jeg skal hive de ønskede data ud i mindre bidder og derefter konstruere et array med det ønskede resultat vha. nogle manipulationer i PHP?
På forhånd tak.
Mvh Tommy Ipsen