meerdere records tonen na selectie
Ik ben bezig geweest met een script voor een mulitselectie waarbij je op een volgende pagina gegevens kan vergelijken.
Op dit moment heb ik het volgende geprobeerd:
Als eerste pagina 1 waar je een selectie maakt.
Daar worden de ID's geselecteerd van de records uit de database.
Dan klik je op de knop om te gaan vergelijken.
De volgende pagina wil ik dan de records zien die ik heb geselecteerd in een tabel.
Mijn SELECT is een beetje lang omdat ik alle kolommen benoem die ik wil hebben dus hier even een kleine samenvatting hiervan:
Quote:
$InstId_GET = $_GET['InstId'];
SELECT ALLE KOLOMMEN DIE IK WIL ZIEN FROM ALLE TABELLEN DIE IK WIL HEBBEN WHERE instellingen.InstId = '$InstId_GET' AND tabelnaam.InstId = instellingen.InstId AND tabelnaam.InstId = instellingen.InstId AND tabelnaam.InstId = instellingen.InstId AND tabelnaam.InstId = instellingen.InstId AND tabelnaam.InstId = instellingen.InstId AND tabelnaam.InstId = instellingen.InstId AND tblsociaal.InstId = instellingen.InstId AND tabelnaam.InstId = instellingen.InstId
SELECT ALLE KOLOMMEN DIE IK WIL ZIEN FROM ALLE TABELLEN DIE IK WIL HEBBEN WHERE instellingen.InstId = '$InstId_GET' AND tabelnaam.InstId = instellingen.InstId AND tabelnaam.InstId = instellingen.InstId AND tabelnaam.InstId = instellingen.InstId AND tabelnaam.InstId = instellingen.InstId AND tabelnaam.InstId = instellingen.InstId AND tabelnaam.InstId = instellingen.InstId AND tblsociaal.InstId = instellingen.InstId AND tabelnaam.InstId = instellingen.InstId
Nu zou ik verwachten dat deze query alles ophaald aan de hand van de ID's toch?
gr
AND tabelnaam.InstId = instellingen.InstId
AND tabelnaam.InstId = instellingen.InstId
AND tabelnaam.InstId = instellingen.InstId
AND tabelnaam.InstId = instellingen.InstId
AND tabelnaam.InstId = instellingen.InstId
AND tblsociaal.InstId = instellingen.InstId
AND tabelnaam.InstId = instellingen.InstId
Wat is de bedoeling van elke keer hetzelfde statement maken?
De eerste heeft een ID die overeenkomt met instellingen.InstId
Dus ID = ID.
Of doe ik dat fout?
Of probeer je een aantal tabellen aan te spreken in deze query? Een join dus, maar dan werkt het heel anders.
Gewijzigd op 05/01/2012 19:05:06 door Erwin H
Met een Join zou dat dus beter gaan zeg je?
geweldig! thanks! Ik ga hier mee aan de slag en laat het weten hoe het is vergaan!
Toevoeging op 06/01/2012 09:38:25:
duidelijke tutorial/ bron!
Toevoeging op 06/01/2012 09:47:38:
Ik heb gekeken naar die tutorial/ uitleg en ik denk dat de inner join het beste zal werken, echter lukt het mij niet....:( huil!
Waar nu de tabel 'kamer' (zie onder) staat zullen nog 6 andere tabellen moeten komen te staan, die allemaal de kolom 'InstId' bevatten en linken naar de tabel 'instellingen'.
Dus dan is de INNER JOIN hiervoor geschikt begrijp ik uit de tutorial.
De query moet dit gaan verwerken (uit de GET )
?InstId=1&InstId=2&InstId=3
Dit zijn alle geselecteerde ID's van een vorige pagina die ik wil gaan vergelijken.
Dan in bron zet ik deze neer: $InstId_GET = $_GET['InstId'];
SELECT * FROM instellingen INNER JOIN kamers ON (instellingen.InstId = '$InstId_GET' AND kamers.InstId = instellingen.InstId)
Misschien dat ik iets over het hoofd zie?
Toevoeging op 06/01/2012 09:59:19:
sorry voor de vele postst maar wil graag anderen op de hoogte houden van mijn oplossing...denk dat ik het heb gevonden:
Ik heb een aantal tabellen en die linken naar een andere tabel met een ID.
Nu heb ik dus de volgende Join gebruikt en ik krijg eindelijk een resultaat terug! :)
"SELECT * FROM instellingen INNER JOIN kamers USING (InstId)"
Toevoeging op 06/01/2012 11:04:34:
Ik heb nu het volgende gemaakt via Toad. Dit lijkt te werken ;) alleen nu nog de filter maken dat deze alleen de selectie laat zien van het geselecteerde op de vorige pagina. Heeft iemand daar een oplossing voor?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
SELECT instellingen.InstId,
instellingen.InstNaam,
instellingen.KoepelId,
instellingen.InstAdresStraat,
instellingen.InstAdresNr,
instellingen.InstPostCijfer,
instellingen.InstPostLetter,
instellingen.InstPlaats,
instellingen.InstProvincie,
instellingen.Status,
tblextra.*,
tblsociaal.*,
tblsoortzorg.*,
tblkeuken.*,
ligging.*,
tbldoelgroep.*,
kamers.*
FROM ( ( ( ( ( ( db_ziz.tblextra tblextra
LEFT OUTER JOIN
db_ziz.instellingen instellingen
ON (tblextra.InstId = instellingen.InstId))
RIGHT OUTER JOIN
db_ziz.ligging ligging
ON (ligging.InstId = instellingen.InstId))
RIGHT OUTER JOIN
db_ziz.tblsociaal tblsociaal
ON (tblsociaal.InstId = instellingen.InstId))
RIGHT OUTER JOIN
db_ziz.tblsoortzorg tblsoortzorg
ON (tblsoortzorg.InstId = instellingen.InstId))
RIGHT OUTER JOIN
db_ziz.tblkeuken tblkeuken
ON (tblkeuken.InstId = instellingen.InstId))
RIGHT OUTER JOIN
db_ziz.kamers kamers
ON (kamers.InstId = instellingen.InstId))
RIGHT OUTER JOIN
db_ziz.tbldoelgroep tbldoelgroep
ON (tbldoelgroep.InstId = instellingen.InstId)
instellingen.InstNaam,
instellingen.KoepelId,
instellingen.InstAdresStraat,
instellingen.InstAdresNr,
instellingen.InstPostCijfer,
instellingen.InstPostLetter,
instellingen.InstPlaats,
instellingen.InstProvincie,
instellingen.Status,
tblextra.*,
tblsociaal.*,
tblsoortzorg.*,
tblkeuken.*,
ligging.*,
tbldoelgroep.*,
kamers.*
FROM ( ( ( ( ( ( db_ziz.tblextra tblextra
LEFT OUTER JOIN
db_ziz.instellingen instellingen
ON (tblextra.InstId = instellingen.InstId))
RIGHT OUTER JOIN
db_ziz.ligging ligging
ON (ligging.InstId = instellingen.InstId))
RIGHT OUTER JOIN
db_ziz.tblsociaal tblsociaal
ON (tblsociaal.InstId = instellingen.InstId))
RIGHT OUTER JOIN
db_ziz.tblsoortzorg tblsoortzorg
ON (tblsoortzorg.InstId = instellingen.InstId))
RIGHT OUTER JOIN
db_ziz.tblkeuken tblkeuken
ON (tblkeuken.InstId = instellingen.InstId))
RIGHT OUTER JOIN
db_ziz.kamers kamers
ON (kamers.InstId = instellingen.InstId))
RIGHT OUTER JOIN
db_ziz.tbldoelgroep tbldoelgroep
ON (tbldoelgroep.InstId = instellingen.InstId)
Gewijzigd op 06/01/2012 09:49:25 door Allan de Bruin
Tevens heb ik iemand vandaag gesproken die mij vertelde dat het best kan zoals ik het eerder had omdat de ID's in de tabellen overeenkomen.
@Erwin, heb je misschien nog andere ideeën?