Overzichttabel maken met waarden uit MySQL
Code (php)
1
$sql1 = "SELECT sp.subproject_naam, sp.type, sp.status, tk.taak_naam, tk.type, tk.status, tk.omschrijving, tk.toewijzen_id, tk.ges_tijd, tk.wer_tijd, tk.ges_budget, tk.wer_budget FROM subprojecten sp JOIN taken tk ON taken.id = sp.subproject_id WHERE project_id = '$project_id'";
De foutmelding is nog steeds dezelfde: Column 'project_id' in where clause is ambiguous
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
SELECT
t.kolom,
a.andere_kolom
FROM
tabel t
JOIN
anderetabel a
ON t.id = a.t_id
WHERE
a.t_id = 12345
t.kolom,
a.andere_kolom
FROM
tabel t
JOIN
anderetabel a
ON t.id = a.t_id
WHERE
a.t_id = 12345
Oneliners zijn voor komedianten ;-)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
SELECT
sp.subproject_naam as subnm,
sp.type,
sp.status,
tk.taak_naam,
tk.type,
tk.status,
tk.omschrijving,
tk.toewijzen_id,
tk.ges_tijd,
tk.wer_tijd,
tk.ges_budget,
tk.wer_budget
FROM
subprojecten sp
JOIN
taken tk
ON
tk.subproject_id = sp.id
WHERE
project_id = '$project_id'
sp.subproject_naam as subnm,
sp.type,
sp.status,
tk.taak_naam,
tk.type,
tk.status,
tk.omschrijving,
tk.toewijzen_id,
tk.ges_tijd,
tk.wer_tijd,
tk.ges_budget,
tk.wer_budget
FROM
subprojecten sp
JOIN
taken tk
ON
tk.subproject_id = sp.id
WHERE
project_id = '$project_id'
Krijg ik nu deze foutmelding alhoewel er wel degelijk een kolom subprojecten.subproject_naam bestaat:
Unknown column 'subprojecten.subproject_naam' in 'field list'
Gewijzigd op 16/12/2014 17:49:51 door Brecht S
Daarnaast moet je in de WHERE de FQN (Fully Qualified Name) gebruiken dus sp.project_id, anders krijg je straks weer dubbelzinnigheden om je oren.
Toevoeging op 16/12/2014 17:55:06:
Hoe heb je die kolom in de tabel zelf genoemd?
Column 'project_id' in where clause is ambiguous
Toevoeging op 16/12/2014 17:57:36:
De kolom in de tabel noemt project_id, maar misschien moet het sp.project_id zijn?
Gewijzigd op 16/12/2014 17:56:30 door Brecht S
Ger van Steenderen op 16/12/2014 17:45:20:
Daarnaast moet je in de WHERE de FQN (Fully Qualified Name) gebruiken dus sp.project_id, anders krijg je straks weer dubbelzinnigheden om je oren.
Met andere woorden:
Alleen heb ik nu alle taken onder de subprojecten zoals:
In plaats van:
Kunnen we hier nog iets aan veranderen?
Gewijzigd op 16/12/2014 18:26:47 door Brecht S
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$sub = '';
$tr = '';
while ($row = mysql_fetch_assoc($res1)) {
if ($row['subnm'] != $sub) {
echo $tr;
$sub = $row['subnm'];
$tr = '</tr>';
// dan display je hier de data voor het subproject
}
// en hier display je de data per taak
}
echo $tr;
?>
$sub = '';
$tr = '';
while ($row = mysql_fetch_assoc($res1)) {
if ($row['subnm'] != $sub) {
echo $tr;
$sub = $row['subnm'];
$tr = '</tr>';
// dan display je hier de data voor het subproject
}
// en hier display je de data per taak
}
echo $tr;
?>
Enigszins wat pseudo code daar ik niet precies weet wat de uiteindelijke html moet zijn.
Maar de intentie was goed :p
@Ger: Werkt perfect. Ik heb het wel volledig aangepast maar je hebt mij enorm goed op weg geholpen met je voorbeeldcode. Thanks!
Als ik daarna een paar andere taken maak onder een ander subproject dan lukt het ook nog. Resultaat:
Maar dan gaat het fout.
Ik vul nu terug een taak onder subproject1 in en dan krijg ik dit als resultaat:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
subproject1 naam
- Taak1
- Taak2
subproject2 naam
- Taak 3
- Taak 4
subproject 1 naam
- Taak 5
- Taak1
- Taak2
subproject2 naam
- Taak 3
- Taak 4
subproject 1 naam
- Taak 5
Hoe komt dit? Waarom zet de code die dan niet samen onder de juiste subproject-groep?
MySQL pretendeert dit automatisch te doen, maar zoals je ziet is dat niet altijd waar!
MySQL doet dit deels wel maar enkel als de items onder elkaar staan in de database en niet als er iets tussen zit. Bvb: Taak1 en Taak2 staan wel gegroepeerd maar 5 komt er niet bij omdat 3 en 4 er tussen zit.
Gewijzigd op 08/01/2015 10:27:44 door Brecht S