Query met 3 tabellen lukt niet
Deze query werkt niet bij mij:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
SELECT * FROM companies,
relationship_managers,
linkbuilding
WHERE relationship_managers.rm_id = companies.rm_id
AND linkbuilding.c_id = companies.c_id
AND c_invisibility = 0
AND y_id = YEAR() /* y_id is bijvoorbeeld 2013 of 2014 en ik wil dat die alleen tabellen van dit jaar weergeeft */
ORDER BY c_id DESC
relationship_managers,
linkbuilding
WHERE relationship_managers.rm_id = companies.rm_id
AND linkbuilding.c_id = companies.c_id
AND c_invisibility = 0
AND y_id = YEAR() /* y_id is bijvoorbeeld 2013 of 2014 en ik wil dat die alleen tabellen van dit jaar weergeeft */
ORDER BY c_id DESC
Weet iemand hoe ik het beter kan doen?
ik krijg namelijk een foutmelding:
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\linkbuilding\beta\check.php on line 19
Gewijzigd op 18/04/2014 17:05:44 door Racoon smasher
werkt niet als in "ik krijg foutmelding", of als "geeft verkeerde resultaten"?
Ivo P op 18/04/2014 17:03:31:
werkt niet als in "ik krijg foutmelding", of als "geeft verkeerde resultaten"?
ow sorry, ja bedoel dat ik foutmelding krijg
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
SELECT *
FROM companies
JOIN relationship_managers ON relationship_managers.rm_id = companies.rm_id
JOIN linkbuilding ON linkbuilding.c_id = companies.c_id
WHERE 1=1
AND c_invisibility = 0
AND y_id = YEAR(NOW())
ORDER BY c_id DESC
FROM companies
JOIN relationship_managers ON relationship_managers.rm_id = companies.rm_id
JOIN linkbuilding ON linkbuilding.c_id = companies.c_id
WHERE 1=1
AND c_invisibility = 0
AND y_id = YEAR(NOW())
ORDER BY c_id DESC
Maar je hebt een jaartal in een kolom y_id opgeslagen???
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
SELECT *
FROM companies
JOIN relationship_managers ON relationship_managers.rm_id = companies.rm_id
JOIN linkbuilding ON linkbuilding.c_id = companies.c_id
WHERE 1=1
AND c_invisibility = 0
AND y_id = YEAR(NOW())
ORDER BY c_id DESC
FROM companies
JOIN relationship_managers ON relationship_managers.rm_id = companies.rm_id
JOIN linkbuilding ON linkbuilding.c_id = companies.c_id
WHERE 1=1
AND c_invisibility = 0
AND y_id = YEAR(NOW())
ORDER BY c_id DESC
still error :(
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\linkbuilding\beta\check.php on line 19
Gewijzigd op 18/04/2014 17:08:13 door racoon smasher
Wat zegt mysql_error()?
Meestal is dit een gevolg van een MySQL-error, heb je daar al naar gekeken ?
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\linkbuilding\beta\check.php on line 19
Btw sorry voor late reactie
Zoiets als "ik heb een zere neus", omdat de functie "doe de deur open" mislukt en je na aanroep doedeuropen() gewoon begint te lopen.
http://www.pfz.nl/wiki/mysql-foutafhandeling-in-php/
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
SELECT *
FROM companies
JOIN relationship_managers ON relationship_managers.rm_id = companies.rm_id
JOIN linkbuilding ON linkbuilding.c_id = companies.c_id
WHERE 1=1
AND c_invisibility = 0
AND y_id = YEAR(NOW())
ORDER BY c_id DESC
FROM companies
JOIN relationship_managers ON relationship_managers.rm_id = companies.rm_id
JOIN linkbuilding ON linkbuilding.c_id = companies.c_id
WHERE 1=1
AND c_invisibility = 0
AND y_id = YEAR(NOW())
ORDER BY c_id DESC
Toevoeging op 22/04/2014 09:35:21:
Racoon smasher op 22/04/2014 09:34:07:
en bij die van mezelf zelfde error
aangezien dat hierboven niet leeg is, zal het wel aan de php er omheen liggen...
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
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
<?php
$querySelect = "SELECT *
FROM companies
JOIN relationship_managers ON relationship_managers.rm_id = companies.rm_id
JOIN linkbuilding ON linkbuilding.c_id = companies.c_id
WHERE 1=1
AND c_invisibility = 0
AND y_id = YEAR(NOW())
ORDER BY c_id DESC";
$rResult = mysql_query($querySelect, $con);
if($rResult === false)
{
echo("Er ging iets fout met de query: ".mysql_error($con)." (".$querySelect.")");
}
else
{
echo "<div class='table'><table id='table'><tr><td>Bedrijf</td><td>Relatie beheerder</td></tr>";
while ($queryFetch = mysql_fetch_array($querySelect))
{
echo "<tr style='display: table-row;'>";
echo "<td>" . $queryFetch['c_name'] . "</td>";
echo "<td>" . $queryFetch['rm_firstname'] . " " . $queryFetch['rm_surname'] . "</td>";
echo "</tr>";
}
}
echo "</table></div>";
?>
$querySelect = "SELECT *
FROM companies
JOIN relationship_managers ON relationship_managers.rm_id = companies.rm_id
JOIN linkbuilding ON linkbuilding.c_id = companies.c_id
WHERE 1=1
AND c_invisibility = 0
AND y_id = YEAR(NOW())
ORDER BY c_id DESC";
$rResult = mysql_query($querySelect, $con);
if($rResult === false)
{
echo("Er ging iets fout met de query: ".mysql_error($con)." (".$querySelect.")");
}
else
{
echo "<div class='table'><table id='table'><tr><td>Bedrijf</td><td>Relatie beheerder</td></tr>";
while ($queryFetch = mysql_fetch_array($querySelect))
{
echo "<tr style='display: table-row;'>";
echo "<td>" . $queryFetch['c_name'] . "</td>";
echo "<td>" . $queryFetch['rm_firstname'] . " " . $queryFetch['rm_surname'] . "</td>";
echo "</tr>";
}
}
echo "</table></div>";
?>
sorry was wat vergeten weg te halen...
de error is:
Er ging iets fout met de query: Column 'c_id' in order clause is ambiguous (SELECT * FROM companies JOIN relationship_managers ON relationship_managers.rm_id = companies.rm_id JOIN linkbuilding ON linkbuilding.c_id = companies.c_id WHERE 1=1 AND c_invisibility = 0 AND y_id = YEAR(NOW()) ORDER BY c_id DESC)
Gewijzigd op 22/04/2014 09:49:17 door racoon smasher
Wat er nu gebeurt is dat je in meerdere tabellen c_id hebt als kolom en de database server weet nu meer welke je wilt gebruiken in 'ORDER BY c_id DESC'. Dus
1) altijd tabellen erbij zetten zoals je bij de joins wel doet
2) geen SELECT * gebruiken, want als je nu de c_id kolom uitleest in je resultset, uit welke tabel komt die dan?
Toevoeging op 22/04/2014 11:26:12:
ik denk trouwens dat de fout zou blijven bestaan, als alleen SELECT * wordt aangepast.
kan ik dan niet beter iets bij ORDER BY c_id neer zetten waardoor hij weet van welke tabel?
c_id staat alleen in de tabellen companies en linkbuilding
Net als een paar regels hoger in de query bij ON ook gebruikt wordt.
En zo pas je dat het liefst ook toe in het stuk SELECT
SELECT companies.c_id , companies.foo, linkbuilding.bar
Toevoeging op 22/04/2014 11:42:14:
Ik krijg geen errors meer van mysql error, maar nog wel deze:
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
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
<?php
$querySelect = "SELECT companies.c_id, companies.c_name
FROM companies
JOIN relationship_managers ON relationship_managers.rm_id = companies.rm_id
JOIN linkbuilding ON linkbuilding.c_id = companies.c_id
WHERE 1=1
AND c_invisibility = 0
AND y_id = YEAR(NOW())
ORDER BY companies.c_id DESC";
$rResult = mysql_query($querySelect, $con);
if($rResult === false)
{
echo("Er ging iets fout met de query: ".mysql_error($con)." (".$querySelect.")");
}
else
{
echo "<div class='table'><table id='table'><tr><td>Bedrijf</td><td>Relatie beheerder</td></tr>";
while ($queryFetch = mysql_fetch_array($querySelect))
{
echo "<tr style='display: table-row;'>";
echo "<td>" . $queryFetch['c_name'] . "</td>";
echo "<td>" . $queryFetch['rm_firstname'] . " " . $queryFetch['rm_surname'] . "</td>";
echo "</tr>";
}
}
echo "</table></div>";
?>
$querySelect = "SELECT companies.c_id, companies.c_name
FROM companies
JOIN relationship_managers ON relationship_managers.rm_id = companies.rm_id
JOIN linkbuilding ON linkbuilding.c_id = companies.c_id
WHERE 1=1
AND c_invisibility = 0
AND y_id = YEAR(NOW())
ORDER BY companies.c_id DESC";
$rResult = mysql_query($querySelect, $con);
if($rResult === false)
{
echo("Er ging iets fout met de query: ".mysql_error($con)." (".$querySelect.")");
}
else
{
echo "<div class='table'><table id='table'><tr><td>Bedrijf</td><td>Relatie beheerder</td></tr>";
while ($queryFetch = mysql_fetch_array($querySelect))
{
echo "<tr style='display: table-row;'>";
echo "<td>" . $queryFetch['c_name'] . "</td>";
echo "<td>" . $queryFetch['rm_firstname'] . " " . $queryFetch['rm_surname'] . "</td>";
echo "</tr>";
}
}
echo "</table></div>";
?>
hier mijn database normalisatie overzicht
Ivo P op 22/04/2014 11:25:07:
ik denk trouwens dat de fout zou blijven bestaan, als alleen SELECT * wordt aangepast.
Daarom stond er ook een punt 1) bij....
Toevoeging op 22/04/2014 11:43:33:
Je moet in de fetch_array functie natuurlijk geen query meegeven, maar het resultaat van de query!
Erwin H op 22/04/2014 11:42:42:
Toevoeging op 22/04/2014 11:43:33:
Je moet in de fetch_array functie natuurlijk geen query meegeven, maar het resultaat van de query!
Toevoeging op 22/04/2014 11:43:33:
Je moet in de fetch_array functie natuurlijk geen query meegeven, maar het resultaat van de query!
sorry ik begrijp je niet, kan je het miss uitleggen?
Je geeft hier nu ee string aan de fetch functie, dat kan toch niet kloppen, of wel?
Erwin H op 22/04/2014 11:51:26:
Come on...
Je geeft hier nu ee string aan de fetch functie, dat kan toch niet kloppen, of wel?
Je geeft hier nu ee string aan de fetch functie, dat kan toch niet kloppen, of wel?
Nou zo heb ik het geleerd en heeft altijd gewerkt?