I try to insert a sql selection into a mysql table and use a php script with following statement:
$sql = "INSERT INTO groeperingInjectieAfname
SELECT
VerschilBerekeningInjectie.datum as datum,
VerschilBerekeningInjectie.uur as uur ,
VerschilBerekeningInjectie.injectieDag as injectieDag,
VerschilBerekeningInjectie.injectieNacht as injectieNacht,
VerschilBerekeningInjectie.injectieTotaal as injectieTotaal,
VerschilBerekening1.afnameDag as afnameDag,
VerschilBerekening1.afnameNacht as afnameNacht,
VerschilBerekening1.afnameTotaal as afnameTotaal
FROM VerschilBerekeningInjectie LEFT JOIN VerschilBerekening1 ON VerschilBerekeningInjectie.datum = VerschilBerekening1.datum and VerschilBerekeningInjectie.uur = VerschilBerekening1.uur and VerschilBerekeningInjectie.datum = '$yesterday' ";
I get following error:
The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1
when i check the selection in phpMyAdmin with following query:
SET SQL_BIG_SELECTS=1;
SELECT
VerschilBerekeningInjectie.datum as datum,
VerschilBerekeningInjectie.uur as uur ,
VerschilBerekeningInjectie.injectieDag as injectieDag,
VerschilBerekeningInjectie.injectieNacht as injectieNacht,
VerschilBerekeningInjectie.injectieTotaal as injectieTotaal,
VerschilBerekening1.afnameDag as afnameDag,
VerschilBerekening1.afnameNacht as afnameNacht,
VerschilBerekening1.afnameTotaal as afnameTotaal
FROM VerschilBerekeningInjectie LEFT JOIN VerschilBerekening1 ON VerschilBerekeningInjectie.datum = VerschilBerekening1.datum and VerschilBerekeningInjectie.uur = VerschilBerekening1.uur WHERE VerschilBerekeningInjectie.datum = '2021-02-05'
The selection is correct.
But I can’t get this query in an php script.
I tried to make two lines:
$sql="SET SQL_BIG_SELECTS=1;"
and
$sql="$sql = "INSERT INTO groeperingInjectieAfname
SELECT VerschilBerekeningInjectie.datum as datum,....."
Hi Igor,
thanks for your answer.
was a typo.
I intended:
$sql=“SET SQL_BIG_SELECTS=1;”
$sql = “INSERT INTO groeperingInjectieAfname SELECT VerschilBerekeningInjectie.datum as datum,…”
but the question remains, how can this query be implemented in a php script?
Is it possible to use the two $sql queries consecutivily?
By the way, the DB tables are in dutch because I am the only user of this database.
regards,
@igor_g
I tried
$sql1 = “SET SQL_BIG_SELECTS=1”;
$sql2 = "INSERT INTO groeperingInjectieAfname
SELECT
VerschilBerekeningInjectie.datum as datum,
VerschilBerekeningInjectie.uur as uur ,
VerschilBerekeningInjectie.injectieDag as injectieDag,
VerschilBerekeningInjectie.injectieNacht as injectieNacht,
VerschilBerekeningInjectie.injectieTotaal as injectieTotaal,
VerschilBerekening1.afnameDag as afnameDag,
VerschilBerekening1.afnameNacht as afnameNacht,
VerschilBerekening1.afnameTotaal as afnameTotaal
FROM VerschilBerekeningInjectie LEFT JOIN VerschilBerekening1 ON VerschilBerekeningInjectie.datum = VerschilBerekening1.datum and VerschilBerekeningInjectie.uur = VerschilBerekening1.uur and VerschilBerekeningInjectie.datum = ‘2021-02-15’ ";
this results in following error message:
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ‘INTO groeperingInjectieAfname SELECT VerschilBerekeningInjectie.datum as da…’ at line 1
the select query is OK (checked it in phpMyadmin).
is it the combination insert/select or the php expression???
@igor_g
as you proposed, I tried the query completely in phpMyAdmin:
SET SQL_BIG_SELECTS=1;
INSERT INTO groeperingInjectieAfname
SELECT
VerschilBerekeningInjectie.datum as datum,
VerschilBerekeningInjectie.uur as uur ,
VerschilBerekeningInjectie.injectieDag as injectieDag,
VerschilBerekeningInjectie.injectieNacht as injectieNacht,
VerschilBerekeningInjectie.injectieTotaal as injectieTotaal,
VerschilBerekening1.afnameDag as afnameDag,
VerschilBerekening1.afnameNacht as afnameNacht,
VerschilBerekening1.afnameTotaal as afnameTotaal
FROM VerschilBerekeningInjectie LEFT JOIN VerschilBerekening1 ON VerschilBerekeningInjectie.datum = VerschilBerekening1.datum and VerschilBerekeningInjectie.uur = VerschilBerekening1.uur and VerschilBerekeningInjectie.datum = ‘2021-02-15’
the select part works fine.
the complete query inclusive the insert part is wrong:
the join of the tables is not correct;
all the records are selected and not only the dates of ‘2021-02-15’.
The joining of the tables is OK when I do only the select part, so the insert part must be reconsidered.
regards.
Of course, becouse first table in LEFT JOIN will be in result set completely. To get the date only you should to place this condition in WHERE…
FROM VerschilBerekeningInjectie
LEFT JOIN VerschilBerekening1
ON VerschilBerekeningInjectie.datum = VerschilBerekening1.datum
AND VerschilBerekeningInjectie.uur = VerschilBerekening1.uur
WHERE VerschilBerekeningInjectie.datum = ‘2021-02-15’
INSERT INTO groeperingInjectieAfname
SELECT
VerschilBerekeningInjectie.datum as datum,
VerschilBerekeningInjectie.uur as uur ,
VerschilBerekeningInjectie.injectieDag as injectieDag,
VerschilBerekeningInjectie.injectieNacht as injectieNacht,
VerschilBerekeningInjectie.injectieTotaal as injectieTotaal,
VerschilBerekening1.afnameDag as afnameDag,
VerschilBerekening1.afnameNacht as afnameNacht,
VerschilBerekening1.afnameTotaal as afnameTotaal
FROM VerschilBerekeningInjectie LEFT JOIN VerschilBerekening1 ON VerschilBerekeningInjectie.datum = VerschilBerekening1.datum and VerschilBerekeningInjectie.uur = VerschilBerekening1.uur WHERE VerschilBerekeningInjectie.datum = ‘2021-02-15’
THE INSERT IS CORRECT
when I use the php script with:
$sql1 = “SET SQL_BIG_SELECTS=1”;
$sql2 = "INSERT INTO groeperingInjectieAfname
SELECT
VerschilBerekeningInjectie.datum as datum,
VerschilBerekeningInjectie.uur as uur ,
VerschilBerekeningInjectie.injectieDag as injectieDag,
VerschilBerekeningInjectie.injectieNacht as injectieNacht,
VerschilBerekeningInjectie.injectieTotaal as injectieTotaal,
VerschilBerekening1.afnameDag as afnameDag,
VerschilBerekening1.afnameNacht as afnameNacht,
VerschilBerekening1.afnameTotaal as afnameTotaal
FROM VerschilBerekeningInjectie LEFT JOIN VerschilBerekening1 ON VerschilBerekeningInjectie.datum = VerschilBerekening1.datum and VerschilBerekeningInjectie.uur = VerschilBerekening1.uur WHERE VerschilBerekeningInjectie.datum = ‘2021-02-15’ ";
NO INSERT AS RESULT.
ERROR MESSAGE:
Error creating table: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ‘INTO groeperingInjectieAfname SELECT VerschilBerekeningInjectie.datum as da…’ at line 1.
I don’t get why the phpMyAdmin action works, but the php script gives an error.