Dus ik neem aan dat je bij de lijst van slecht_samen:
1 - 2
1 - 4
2 - 3
Dus de namen van de medicijnen wil weergeven die bij deze ID's horen? Iig, zo heb ik wel die query opgebouwd.
Dus je komt al snel met een query als:
....... WHERE medicijn_ID = slecht_samen.medicijn_een AND medicijn_ID = medicijn_twee, en dat werkt dus nie.. Maar ik heb dus die query die ik laatst noemde hier, en die doet het wel.. alleen kan ik de gegevens niet goed sorteren.
Dit klopt, er is dus alleen 1 probleempje. De eerste medicijn_ID is niet perse hetzelfde als de tweede medicijn_ID (in veel gevallen juist anders, anders zou het betekenen dat een medicijn slecht samen gaat met zichzelf). Omdat beide medicijn_ID dus verschillend kunnen zijn, hebben ze allebei als het ware hun eigen 'versie' (of instantie) nodig van de medicijnen tabel. Om die twee versies echter uit elkaar te kunnen houden moeten ze een unieke naam hebben. Die unieke naam kan je geven door een alias te gebruiken.
Ik heb even een stukje php uitgewerkt die met mijn test database werkt.
PHP code:
<?
// $host, $user, $pass en $db natuurlijk even aanpassen
mysql_connect($host, $user, $pass);
mysql_select_db($db);
$query = "SELECT firsttable.name AS 'leftitem', secondtable.name AS " .
"'rightitem' FROM items AS firsttable, items AS secondtable, " .
"links WHERE firsttable.itemid = links.first AND " .
"secondtable.itemid = links.second";
$result = mysql_query($query);
while($record = mysql_fetch_array($result)) {
$item1 = $record['leftitem'];
$item2 = $record['rightitem'];
echo "$item1 : $item2<br />\n";
}
?>
Het enige wat je eigenlijk moet doen is even de tabelnamen en kolomnamen aanpassen. De naam van de alias hoef je niet perse te veranderen, als je dit echter wel doet moet je zorgen dat je deze naam ook in de WHERE clause aanpast.
De database die ik hier overigens bij gebruikt heb is:
--
-- Table structure for table `items`
--
DROP TABLE IF EXISTS `items`;
CREATE TABLE `items` (
`itemid` int(10) unsigned NOT NULL auto_increment,
`name` varchar(100) NOT NULL default '',
PRIMARY KEY (`itemid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Table structure for table `links`
--
DROP TABLE IF EXISTS `links`;
CREATE TABLE `links` (
`first` int(11) NOT NULL default '0',
`second` int(11) NOT NULL default '0'
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Deze is qua opzet dus identiek aan jouw database structuur.
Waarschijnlijk kan dit je wel een zetje in de goede richting geven. Zo niet, laat het nog maar horen. Het helpt dan wel als je een database dump (iig de table creates) zou geven zodat ik je database hier na kan maken. Zo kan ik je gegarandeerd een (syntax) correcte query geven.