Join probleem
Hallo,
Ik heb een database table, met daarin meldingen (wat ik ook al in een aantal andere topics over had.) Nu heb ik 1 de table 'meldingen' de melding staan en een id. Nu heb ik in de table 'Site' datzelfde ID staan en ook de bijbehoorende site. Nu wil ik graag dat als '$_GET['site']' bijv regio25.nl is dat hij dan allen meldingen pakt waarbij het in de site table staat dat bij dat id regio25.nl hoort. Ik draai op dit moment de volgende query maar die moet dus wat worden uitgebreid/aangepast
Hoe moet ik dat doen? Ik dacht dat ik de where moest weghalen en dan voor een Join zou moeten vervangen, maar zou niet weten wat voor join.
Ik heb een database table, met daarin meldingen (wat ik ook al in een aantal andere topics over had.) Nu heb ik 1 de table 'meldingen' de melding staan en een id. Nu heb ik in de table 'Site' datzelfde ID staan en ook de bijbehoorende site. Nu wil ik graag dat als '$_GET['site']' bijv regio25.nl is dat hij dan allen meldingen pakt waarbij het in de site table staat dat bij dat id regio25.nl hoort. Ik draai op dit moment de volgende query maar die moet dus wat worden uitgebreid/aangepast
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?
SELECT
b.id,
b.melding,
b.time,
b.site,
GROUP_CONCAT(c.description SEPARATOR ', ') AS p2_capcodes
FROM
p2_brandweer AS b
JOIN
p2_capcode_link AS cl
ON b.id = cl.id
JOIN
p2_capcodes AS c
ON cl.capcode = c.capcode
WHERE site = '".$_GET['site']."'
GROUP BY b.id, b.melding
ORDER BY b.time DESC
LIMIT 0, ".$_GET['count']."
?>
SELECT
b.id,
b.melding,
b.time,
b.site,
GROUP_CONCAT(c.description SEPARATOR ', ') AS p2_capcodes
FROM
p2_brandweer AS b
JOIN
p2_capcode_link AS cl
ON b.id = cl.id
JOIN
p2_capcodes AS c
ON cl.capcode = c.capcode
WHERE site = '".$_GET['site']."'
GROUP BY b.id, b.melding
ORDER BY b.time DESC
LIMIT 0, ".$_GET['count']."
?>
Hoe moet ik dat doen? Ik dacht dat ik de where moest weghalen en dan voor een Join zou moeten vervangen, maar zou niet weten wat voor join.
Wat je in ieder geval niet moet doen is direct met een $_GET (of $_POST) waarde in een query gaan werken.
Afgaande op de kleurtjes klopt er ook iets niet in je query (kijk naar regel 16 en 19).
Afgaande op de kleurtjes klopt er ook iets niet in je query (kijk naar regel 16 en 19).
Zoals je de query nu schrijft staat de kolom site in de tabel p2_brandweer. Hetgeen ook niet onlogisch is als bij elke melding maar 1 site hoort.
Heey Obelix en Idefix,
Hoe moet ik dat dan doen? en dat het rood word houd gewoon in dat het een php string is volgens mij?
@Ger, Die was eerder idd altijd in de p2_brandweer, maar ik wil nu dat als er meerdere site's dezelfde melding hebben dat ook mogelijk is. Daarom gekozen voor een 2e table. Het gedeelte van de site uit de p2_brandweer moet er inderdaad nog uit.
Maar heeft een van jullie een idee wat ik moet toevoegen zodat hij het gaat doen zoals ik in de begin topic heb beschreven?
Hoe moet ik dat dan doen? en dat het rood word houd gewoon in dat het een php string is volgens mij?
@Ger, Die was eerder idd altijd in de p2_brandweer, maar ik wil nu dat als er meerdere site's dezelfde melding hebben dat ook mogelijk is. Daarom gekozen voor een 2e table. Het gedeelte van de site uit de p2_brandweer moet er inderdaad nog uit.
Maar heeft een van jullie een idee wat ik moet toevoegen zodat hij het gaat doen zoals ik in de begin topic heb beschreven?
Weet iemand hier wat op?
Toevoeging op 20/01/2013 18:20:41:
Weet iemand hier wat op?
Toevoeging op 20/01/2013 18:20:41:
Weet iemand hier wat op?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
SELECT
s.id,
s.site,
b.melding,
b.time,
GROUP_CONCAT(c.description SEPARATOR ', ') AS p2_capcodes
FROM
sites AS s
INNER JOIN
p2_brandweer AS b
ON s.id = b.id AND s.site = 'site25.nl'
INNER JOIN
p2_capcode_link AS cl
ON b.id = cl.id
INNER JOIN
p2_capcodes AS c
ON cl.capcode = c.capcode
GROUP BY
s.id, s.site, b.time
s.id,
s.site,
b.melding,
b.time,
GROUP_CONCAT(c.description SEPARATOR ', ') AS p2_capcodes
FROM
sites AS s
INNER JOIN
p2_brandweer AS b
ON s.id = b.id AND s.site = 'site25.nl'
INNER JOIN
p2_capcode_link AS cl
ON b.id = cl.id
INNER JOIN
p2_capcodes AS c
ON cl.capcode = c.capcode
GROUP BY
s.id, s.site, b.time
Gewijzigd op 20/01/2013 18:58:04 door Ger van Steenderen
Ik krijg geen waarden terug. Terwijl er wel degelijk id's in de sites en de p2_brandweer overeenkomen.
Toevoeging op 20/01/2013 19:30:38:
Zag dat er site25.nl stond, heb nu dit:
Maar dan blijft hij maar laden...
Toevoeging op 20/01/2013 19:30:38:
Zag dat er site25.nl stond, heb nu dit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?
SELECT
s.id,
s.site,
b.melding,
b.time,
GROUP_CONCAT(c.description SEPARATOR ', ') AS p2_capcodes
FROM
p2_site_link AS s
JOIN
p2_brandweer AS b
ON s.id = b.id AND s.site = '".$mysqli->real_escape_string($_GET['site'])."'
JOIN
p2_capcode_link AS cl
ON b.id = cl.id
JOIN
p2_capcodes AS c
ON cl.capcode = c.capcode
GROUP BY
s.id, s.site, b.time
LIMIT 0, ".$mysqli->real_escape_string($_GET['count'])."
?>
SELECT
s.id,
s.site,
b.melding,
b.time,
GROUP_CONCAT(c.description SEPARATOR ', ') AS p2_capcodes
FROM
p2_site_link AS s
JOIN
p2_brandweer AS b
ON s.id = b.id AND s.site = '".$mysqli->real_escape_string($_GET['site'])."'
JOIN
p2_capcode_link AS cl
ON b.id = cl.id
JOIN
p2_capcodes AS c
ON cl.capcode = c.capcode
GROUP BY
s.id, s.site, b.time
LIMIT 0, ".$mysqli->real_escape_string($_GET['count'])."
?>
Maar dan blijft hij maar laden...




