Partyflock
 
Forumonderwerp · 785818
Waarschuw beheerder
ey
keb 2 tabellen
let niet op de voorbeelden!

tabel 1: medicijnen
tabel 2: slecht_samen

Medicijnen
1 - prednison
2 - xtc
3 - benzine

slecht_samen
1 - 3
2 - 3

prednison gaat niet samen met benzine
xtc gaat niet samen met benzine

nu moet ik van elk medicijn weer geven met welk ander medicijn het niet samen kan. Wat voor query moet ik hiervoor gebruiken? weet iemand dat?
 
Waarschuw beheerder
En dit zet je op een forum waar alle randdebielen van deze aardkloot bij elkaar komen :s

(y)
Waarschuw beheerder
select * from [naam_tabel_twee]
Waarschuw beheerder
Uitspraak van verwijderd op woensdag 15 juni 2005 om 22:23:


hehe :D ik weet dat 90% van de berichten niet serieus zijn. Ik wacht gewoon op die andere 10%
Waarschuw beheerder
Ik geef je toch antwoord.. als je een tabel hebt waarin al staat welke medicijnen niet samen gaan en je wilt alles weergeven uit deze tabel dan doe je gewoon: select * from [naam_tabel_twee]
Waarschuw beheerder
Nielzepiels > Dat is verre van een juiste oplossing. Wat wel zou moeten werken is dit:

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;


items = medicijnen
links = slecht_samen

Met een beetje gezond verstand kom je er zo uit. Je kan overigens denk ik ook wel een expliciete join gebruiken:

http://dev.mysql.com/doc/mysql/en/join.html
laatste aanpassing
Waarschuw beheerder
zal morgen er aan verder werken.. is nu te laat.. te weinig concentratie nu. Overigens, die joins vind ik de moeilijkste dingen in MYSQL, zelfs met de meest duidelijke uitleg snap ik het niet :D
Waarschuw beheerder
Maar ja, zonder joins heb je weinig aan een relationele database :)
Waarschuw beheerder
hebben de kolommen geen namen in deze database :/

volgens mij zou het iets van

SELECT MEDICIJNID.medicijnen, MEDICIJNNAAM.medicijnen, MEDICIJNID2.slecht_samen

WHERE MEDICIJNID2 =' '

*eventueel*

OR MEDICIJNID3 =' '

en dan daar de gegevens van welk medicijn je het wilt weten.. lijkt mij het meest logisch, maar ben er nog niet echt in verdiept :)

succes iig :P
laatste aanpassing
 
Waarschuw beheerder
SELECT medicijnen.medicijn_naam FROM medicijnen, slecht_samen WHERE medicijnen.medicijn_nr=slecht_samen.nr1 OR medicijnen.medicijnen_nr=slecht_samen.nr2

tabel 1: medicijnen
medicijn_nr | medicijn_naam

tabel2: slecht_samen
nr1 | nr2
laatste aanpassing
 
Waarschuw beheerder
even wat code uit mijn simpele film database :D
staat vast wel wat tussen wat je kunt gebruiken voor je database.
Wel even de database en tabelnamen aanpassen :P


use film
select film.titel,film_maatschappij.naam
from film,film_maatschappij
where film_maatschappij.film_maatschappij_id = film.film_maatschappij_id


use film
select film.titel,genre.genres
from film,genre
where genre.genre_ID = film.genre_ID
and genre.genres = 'triller';


Use film
Select titel
From film, film_maatschappij
Where film_Maatschappij = 'A-Film' And film.film_Maatschappij_id = film_maatschappij.film_Maatschappij_ID;


Use film
Select Titel, Voorletters, Voorvoegsel, Naam
From FILM, ACTEUR, ROL
Where FILM.Film_ID = ROL.Film_ID And ACTEUR.Acteur_ID = ROL.Acteur_ID;


Use film
Select Titel, Voorletters, Voorvoegsel, Naam, Geboortedatum
From FILM, ACTEUR, ROL
Where FILM.Film_ID = ROL.Film_ID And ACTEUR.Acteur_ID = ROL.Acteur_ID And Geboortedatum >='06/02/1975' And Geslacht = 'M';


Use film
Select Titel, COUNT(ROL.Acteur_ID)
From FILM, ROL
Where ROL.Film_ID = FILM.Film_ID
GROUP BY Titel

(heb nu namelijk geen zin om het voor je uitgebreid uit te werken, ben namelijk een beetje gaar :D )
Waarschuw beheerder
Rickey > Dat werkt niet, vanwege de ambiguiteit. Je gebruikt immers de tabel medicijnen in 2 joins, waardoor je wel een alias moet maken.
Waarschuw beheerder
hmmz.

Is het wel mogelijk met 1 query? want je kan volgens mij niet zo iets als dit zeggen: WHERE medicijn_ID = medicijn_een AND medicijn_ID = medicijn_twee

medicijn_ID word nu 2 keer gebruikt.
Ik krijg ook alleen medicijn_een op me scherm.

$query3 = "SELECT * FROM medicijnen LEFT JOIN slecht_samen ON medicijnen.medicijn_ID = slecht_samen.medicijn_een AND medicijnen.medicijn_ID = slecht_samen.medicijn_twee";

Voor een database ontwerp kan je naar http://www.c-jochemsen.nl/apotheek en dan gaat het natuurlijk alleen om de tabellen medicijnen en slecht samen.
Waarschuw beheerder
Lees svp mijn oplossing. Deze ambiguiteit los je op door een alias te creeren voor beide verwijzingen naar de (zelfde) tabel. Vervolgens in de expressie dus ook naar die aliasen verwijzen.

Mocht je een expliciete join willen gebruiken, dan dien je natuurlijk wel 2 joins in totaal te gebruiken.
Waarschuw beheerder
narotic. dan snap ik je where clause nie ech

WHERE firsttable.itemid = links.first AND secondtable.itemid = links.second;

die secondtable.itemid

WHERE medicijnen.medicijn_ID = slecht_samen.medicijn_een AND medicijnen.medicijn_ID = slecht_samen.medicijn_twee";

daar heb ik medicijnen.medicijn_ID. maar dat zou volgens jou slecht_samen...... moeten zijn
Waarschuw beheerder
firsttable en secondtable kun je laten staan, dat zijn namelijk de alias'en die ik maak voor de tabel 'items' (in jouw geval dus medicijnen).

Zoek anders in je boek even op hoe het creeren van een alias werkt voor een tabel in de table_definition (FROM clause).
 
Waarschuw beheerder
ik weet niet wat voor SQL jij gebruikt :9
Mijne moet werken :yes:
laatste aanpassing
Waarschuw beheerder
Probeer dan maar 's (Y)

Sowieso als je nagaat wat jouw query doet zie je al dat dat niet het juiste is. Deze zal ook enkel resultaten teruggeven waarbij beide kolommen in slecht_samen dezelfde waarde bevatten. Gezien de context zijn zulke records hoogstonwaarschijnlijk.

TechnoEmperor > Wil je overigens gewoon alle combinaties weergeven die slecht samen gaan (dat doet de query die ik je eerder gaf) of wil je slechts de medicijnen weergeven die slecht samen gaan met een bepaald (gespecificeerd) medicijn?
laatste aanpassing
 
Waarschuw beheerder
hmm ja ik zie et :9
maar ga dit dus echt niet testen :9
en die taal die je gebruikt :no:
Ken ook wel normaal nederlands, wat voor iedereen te verstaan is gebruiken ;)
Waarschuw beheerder
Rickey die van jou werkt half. Hij geeft nu alleen de namen uit medicijn_een weer.

jij zegt: WHERE medicijnen.medicijn_ID = slecht_samen.medicijn_een AND medicijnen.medicijn_ID = slecht_samen.medicijn_twee";

blijkbaar mag je medicijn_ID maar 1 keer gebruiken
 
Waarschuw beheerder
ja ik heb em aangepast ;)
je moet niet AND maar OR gebruiken

SELECT medicijnen.medicijn_naam FROM medicijnen, slecht_samen WHERE medicijnen.medicijn_nr=slecht_samen.nr1 OR medicijnen.medicijnen_nr=slecht_samen.nr2


Waarschuw beheerder
en die taal die je gebruikt


Wat is volgens jou dan het probleem met mijn taalgebruik?

SELECT medicijnen.medicijn_naam FROM medicijnen, slecht_samen WHERE medicijnen.medicijn_nr=slecht_samen.nr1 OR medicijnen.medicijnen_nr=slecht_samen.nr2


Geeft een overzicht van alle medicijnen die slecht samen gaan met een ander medicijn. Je weet dus niet met welk ander medicijn, dus ook deze query klopt niet.
laatste aanpassing
 
Waarschuw beheerder
geeft ie 2 results terug, die moet je wel met een while lus uitlezen ofzo
 
Waarschuw beheerder
Uitspraak van narotic op donderdag 16 juni 2005 om 10:38:
Wat is volgens jou dan het probleem met mijn taalgebruik?


ik moet er te lang over na denken :yes: (lees, zelf ik)
Waarschuw beheerder
ik moet er te lang over na denken (lees, zelf ik)


Tja, voor zover ik kan zien gebruik ik toch alleen normaal Nederlands en een stukje taalgebruik wat normaal is wanneer je over databases praat. Maar vraag gerust om opheldering hoor... Ik ga met alleen niet in allerlei bochten wringen om het voor elke leek begrijpbaar te houden, dan zoek je maar een woordje op in het woordenboek (Y)
 
Waarschuw beheerder
Uitspraak van narotic op donderdag 16 juni 2005 om 10:38:
Geeft een overzicht van alle medicijnen die slecht samen gaan met een ander medicijn. Je weet dus niet met welk ander medicijn, dus ook deze query klopt niet.


ach ja kut zooi :(

Moet je er alsnog
AND slecht_samen.slecht_samen_id=1 (of 2)
aan toevoegen en de tabel slecht_samen uitbreiden met een ID
moet je wel weten welke slecht samen medicijnen je wilt ophalen.
En je kan zo ook via een while lus alles ophalen ;)
Waarschuw beheerder
damn rickyey, idd. hij geeft ook idd 2 keer de 1e tabel weer

medicijn_een medicijn_een medicijn_een

medicijn_een
medicijn_twee
medicijn_een
medicijn_twee
medicijn_een
medicijn_twee

en een while lus gebruik ik al.

$query3 = "SELECT medicijnen.medicijnnaam FROM medicijnen, slecht_samen WHERE medicijnen.medicijn_ID = slecht_samen.medicijn_een OR medicijnen.medicijn_ID = slecht_samen.medicijn_twee";
$resultaat3 = mysql_query($query3) or die (mysql_error());
while ($obj3 = mysql_fetch_array($resultaat3)) {
?>
<?php echo $obj3['medicijnnaam']; ?><br />

<?}?>
 
Waarschuw beheerder
trouwens die 2e kan wel als je er een beetje een logische code onderbouwt :9
Waarschuw beheerder
neej er mocht geen uniek ID veld in de tabel slecht_samen komen.
pff tis ech moeilijk. deze opdracht bepaald of ik nu me diploma haal of na de zomervakantie terug moet komen op school om voor dat vak nog een voldoende te halen :S
 
Waarschuw beheerder
$query3 = "SELECT medicijnen.medicijnnaam FROM medicijnen, slecht_samen WHERE medicijnen.medicijn_ID = slecht_samen.medicijn_een OR medicijnen.medicijn_ID = slecht_samen.medicijn_twee";
$resultaat3 = mysql_query($query3) or die (mysql_error());
while ($obj3 = mysql_fetch_array($resultaat3)) {
while ( i < 2){
if (empty(i)){
i = '1';
}
if (i == '1'){
?>
<?php echo $obj3['medicijnnaam']; ?>

<?
i = 2;}
else{?>

?>
<?php echo $obj3['medicijnnaam']; ?><br />

<?
i = 1;
}}?>


hier heb je het ook opgelost :9
laatste aanpassing
Waarschuw beheerder
SELECT eerstemedicijn.medicijnnaam AS 'medicijn1', tweedemedicijn.medicijnnaam AS 'medicijn2'

FROM medicijnen AS eerstemedicijn, medicijnen AS tweedemedicijn, slecht_samen

WHERE eerstemedicijn.medicijn_ID = slecht_samen.medicijn_een

AND tweedemedicijn.medicijn_ID = slecht_samen.medicijn_twee;


Als er hier nog niet mee uitkomt dan weet ik het ook niet meer...

Mocht je willen weten welke medicijnen slecht samen gaan met een bepaald medicijn waarvan je de ID (in dit voorbeeld 1234) weet, dan:



SELECT medicijnen.medicijnnaam

FROM medicijnen, slecht_samen

WHERE medicijnen.medicijn_ID = slecht_samen.medicijn_een

OR medicijnen.medicijn_ID = slecht_samen.medicijn_twee

AND medicijnen.medicijn_ID = '1234'

laatste aanpassing
Waarschuw beheerder
de id's weet je niet. Moet gewoon alles uit die tabel halen.
met die query van jou hier boven krijg ik alleen medicijn_een te zien. Dat terwijl ik niks echo. En om eerlijk te zijn weet ik niet eens wat ik moet echo'en.

als ik onder de query $resultaat = mysql_query($query) doe en ik echo $resultaat gebeurd er ook niks anders dan errors.

Maar goed, ik ben gewoon te slecht in dit soort dingen en ga je verder ook nie lastig vallen. In ieder geval bedankt voor de hulp. Heb er wel weer wat bij geleerd wat betreft die aliassen enzo.
Waarschuw beheerder
$query3 = "SELECT medicijnen.medicijnnaam FROM slecht_samen INNER JOIN medicijnen ON (slecht_samen.medicijn_twee = medicijnen.medicijn_ID) OR (slecht_samen.medicijn_een = medicijnen.medicijn_ID)";

Dit is hem :D kreeg nog hulp van goeie maat van mij die zat in de klas ( HTS ) en kon ff met paar anderen helpen :D
Waarschuw beheerder
Maar dan krijg je toch slechts een overzicht van medicijnen die icm iets anders slecht zijn? Zonder de gegevens met welk ander medicijn ze slecht zij? :S

Ik kan me vergissen, maar dit lijkt me redelijk identiek te zijn aan:

SELECT medicijnen.medicijnnaam

FROM medicijnen, slecht_samen

WHERE medicijnen.medicijn_ID = slecht_samen.medicijn_een

OR medicijnen.medicijn_ID = slecht_samen.medicijn_twee


Wat Rickey dus ook al eerder postte.
laatste aanpassing
 
Waarschuw beheerder
nee hijs goed
Waarschuw beheerder
Kan iemand mij dan uitleggen hoe je relaties tussen 2 medicijnen aan kan geven terwijl je maar 1 kolom terugkrijgt?
Waarschuw beheerder
Bij die query die ik dan nu heb, echo ik alleen medicijnnaam.
Dan krijg ik het zo op me scherm:

medicijn_een
medicijn_twee
medicijn_een
medicijn_twee

Dat is verder wel goed. Alleen kan ik het niet goed sorteren
Zou overzichtelijker zijn als het zo was

medicijn_een
medicijn_twee

medicijn_een
medicijn_twee

enz. Maar dat is niet te doen lijkt me aangezien ik alleen medicijnnaam echo.

Narotic, zou je dit kunnen oplossen door aliassen te nemen?
Dat je dan medicijnnaam 2 aliassen geef, en alias 1 koppel je aan medicijn_een en alias 2 koppel je aan medicijn_twee
Dan zou je die 2 aliassen kunnen echo'en en wel alles goed kunnen sorteren. Ik vraag je niet om zo iets te maken, alleen of dat het idee van aliassen is.
Waarschuw beheerder
Ah, op die manier kom je bij de oplossingen :) Erg omslachtig...

De oplossing die ik eerder aandroeg zou moeten werken, ik heb gister een test database gemaakt met een soortgelijke opzet. Daarbij werkte die query zoals het hoorde.

Het nut van een alias is dat je naar een tabel kan verwijzen onder een andere naam. Dit heb je dus nodig als je vaker dan 1 keer naar een tabel wil verwijzen. Omdat beide kolommen in je 'slecht_samen' foreign keys zijn naar 'medicijnen' moet je dus 2 keer naar de medicijnen tabel verwijzen. Voor beide kolommen in 'slecht_samen' wil je namelijk de naam zoeken die bij het medicijn_id hoort.

Ik raad je aan om me anders de specifieke bug te geven die bij mijn query optreedt. In de kern zou de query namelijk goed moeten zijn. Het eerste medicijn wordt gereturneerd als 'medicijn1', het tweede als 'medicijn2'.

Vanavond later kan ik er nog wel naar kijken, post hier desnoods anders nog de SQL code om je database (incl. inhoud) te creeren (maw. een database dump). Dan kan ik eventueel ook wel het stukje php code erbij schrijven.
Waarschuw beheerder
dus die van mij werkt ook niet, als ik rarotic zijn post lees omdat je maar één medicijn naam terug krijgt... dat is toch ook hetgeen dat hij wil. Of wil hij een lijst hebben met alle medicijnen die niet met elkaar samengaan...?

Die query van narotic snap ik van geen kant :p zo ver ben ik nog niet :D
Waarschuw beheerder
ik wil een lijst met alle medicijnen die niet samen gaan met andere medicijnen.

Die lijst ziet er zo uit

1 - 2
1 - 4
2 - 3

dat zijn allemaal ID's van medicijnen die uit een andere tabel komen, namelijk uit de tabel medicijnen :p

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.

Morgen ga ik ff verder kijken met de query van narotic, aangezien hij zegt dat die query gewoon moet werken, en ik geloof hem natuurlijk ook..
Maar narotic, wat zou ik moeten echo'en bij jou query? die met die aliassen
Waarschuw beheerder
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.
laatste aanpassing
 
Waarschuw beheerder
SQL ken ik al een beetje, moet toch ook maar eens PHP gaan leren :D
Waarschuw beheerder
kijk zaterdag of zondag erna narotic. nu nmoek nar bed
Waarschuw beheerder
kijk zaterdag of zondag erna narotic. nu nmoek nar bed


Prima hoor, neem de tijd.

SQL ken ik al een beetje, moet toch ook maar eens PHP gaan leren


Het is iig erg handig om beide te kunnen.
Waarschuw beheerder
Ok, keb goed naar je query gekeken.. en naar je tabel dumps, en moet nu een goeie query hebben voor mijn database, alleen zegt hij: Unknown column 'firsttable.name' in 'field list'

mijn db:

CREATE TABLE medicijnen (
medicijn_ID tinyint(3) NOT NULL auto_increment,
medicijnnaam varchar(30) NOT NULL default '',
PRIMARY KEY (medicijn_ID)
) TYPE=MyISAM;


en

CREATE TABLE slecht_samen (
medicijn_een tinyint(3) NOT NULL default '0',
medicijn_twee tinyint(3) NOT NULL default '0',
PRIMARY KEY (medicijn_een,medicijn_twee)
) TYPE=MyISAM;


De query: ( + php )

<?
$query6 = "SELECT firsttable.name AS 'leftitem', secondtable.name AS " .
"'rightitem' FROM medicijnen AS firsttable, medicijnen AS secondtable, " .
"slecht_samen WHERE firsttable.medicijn_ID = slecht_samen.medicijn_een AND " .
"secondtable.medicijn_ID = slecht_samen.medicijn_twee";
$resultaat6 = mysql_query($query6) or die (mysql_error());
while ($obj6 = mysql_fetch_array($resultaat6)) {


$item1 = $obj6['leftitem'];
$item2 = $obj6['rightitem'];

echo "$item1 : $item2 <br />\n";

}
?>


Als ik dit zie:

"SELECT firsttable.name AS 'leftitem', secondtable.name AS " ."'rightitem'

zou ik zeggen medicijnen AS 'leftitem', slecht_samen AS 'rightitem'.
want slecht_samen is de tweede tabel.

Daarna zeg je:
FROM items AS firsttable, items AS secondtable, " .

En die snap ik nie, FROM tabel1 as medicijnen, tabel1 as slecht_samen.

maja, is de query van mij nu goed of fout?
laatste aanpassing
Waarschuw beheerder
Die foutmelding klopt, jij hebt geen kolom 'name' in je medicijnen tabel. Die heet bij jou 'medicijnnaam'.

"SELECT firsttable.name AS 'leftitem', secondtable.name AS " ."'rightitem'

zou ik zeggen medicijnen AS 'leftitem', slecht_samen AS 'rightitem'.
want slecht_samen is de tweede tabel.


Je specificeert hier niet de tabellen, maar de kolommen! Dit klopt dus wel degelijk.

En die snap ik nie, FROM tabel1 as medicijnen, tabel1 as slecht_samen.


Lees:

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.


maja, is de query van mij nu goed of fout?


Als ik je query zo zie is het enige wat je aan moet passen die 'name' omschrijven naar 'medicijnnaam' (2 keer).
laatste aanpassing
Waarschuw beheerder
ja hij werkt perfect. thank u very much !
zal de query nog ff 50 keer overlezen om het helemaal te snappen :p ja snap het wel, maar moet onthouden hoe het moet :p
Waarschuw beheerder
Mooi zo :) Zodra je wat meer in SQL zit zal het vanzelf makkelijker gaan. SQL is voornml iets waar je gewoon wat mee moet oefenen, het gaat uiteindelijk gewoon om het principe goed snappen en gezond verstand.
Waarschuw beheerder
ja idd. maar nu heb ik een query ( laatste opdracht is dat ) en die heb ik precies zelfde als hoe het in de MySQL reference Manual staat, die website die jij in je 1e post volgens mij gaf.

SELECT * FROM table1 LEFT JOIN table2 ON table1.id=table2.id
LEFT JOIN table3 ON table2.id=table3.id;

ik heb

$query2 = ("SELECT medicijnnaam FROM medicijnen INNER JOIN medicijnwerking ON medicijnen.medicijn_ID = medicijnwerking.medicijn_nr INNER JOIN werkingen ON medicijnwerking.werking_nr = werkingen.werkingen_ID ") or die (mysql_error());

Zelfde als het voorbeeld, toch kan ik niks echo'en uit de tabel werkingen. En hij geeft geen errors, en ik zie geen typfoutjes.
Waarschuw beheerder
$query3 = "SELECT * FROM medicijnen AS K, medicijnwerking AS L, werkingen AS B WHERE K.medicijn_ID = L.medicijn_nr AND L.werking_nr = B.werkingen_ID";

Dit is um :p
Waarschuw beheerder
Op deze manier kun je m werkend krijgen met een expliciete JOIN opdracht:

SELECT leftitem.name, rightitem.name

FROM links INNER JOIN items AS leftitem ON links.first = leftitem.itemid

INNER JOIN items AS rightitem ON links.second = rightitem.itemid


(Deze werkt voor de test database zoals ik die eerder gebruikt heb)

Let overigens goed op de verschillen tussen OUTER JOIN, LEFT JOIN, RIGHT JOIN, INNER JOIN etc. Deze doen allemaal namelijk wat anders, alhoewel ze in sommige gevallen dezelfde resultaten zullen geven. Het is wel belangrijk dat je de verschillen kent.
laatste aanpassing