vreemde mysql resultaat
Code (php)
1
"select *,prt.id as prid from prijzen_temp pt, producten prt where prt.site_id != 0 AND prt.site_id IS NOT NULL AND prt.cat_id IS NOT NULL AND prt.ean = pt.ean AND pt.ean != 0
Als ik dit in phpmyadmin draai, dan krijg ik het totaal van alle producten in de producten database.
Ik krijg dan
Quote:
619690 total, 0 in query, Query took 0.0256 seconds.
0 in query.
Maar als ik dit via php draai, dan krijg ik 31 resultaten
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
$o = mysqli_query($DBD->conn(),"select *,prt.id as prid from prijzen_temp pt, producten prt where prt.site_id != 0 AND prt.site_id IS NOT NULL AND prt.cat_id IS NOT NULL AND prt.ean = pt.ean AND pt.ean != 0") or die (mysqli_error($DBD->conn()));
while ($t = mysqli_fetch_array($o))
{
$tel++;
echo $tel.'--+--';
}
while ($t = mysqli_fetch_array($o))
{
$tel++;
echo $tel.'--+--';
}
Hoe kan dit verschillend zijn?
Ik zou je best willen helpen. Maar jij geeft nooit antwoord. Je stelt een vraag, mensen gaan daarop reageren en proberen je te helpen ... en wat doet Daniel? Niks. Die vindt het wel prachtig. Hij krijgt z'n antwoorden, maar even laten weten of het gelukt is ... vergeet het maar. Een bedankje? Nee hoor, Daniel zwijgt.
Kijk, hier heb je zo'n voorbeeldje. Allemaal mensen die reageren en Daniel ... die gelooft het wel. Lekker makkelijk. Oh, en hier nog een voorbeeldje.
Nee hoor Daniel. Ik ga je vandaag niet helpen. Ik kan m'n tijd beter besteden aan mensen die dat echt waarderen.
Niet met kwade bedoelingen. Waardeer alle hulp.
Weet zo'n query:
Krijg alle resultaten in phpmysql te zien van de table producten:
Quote:
Showing rows 0 - 24 (613940 total, 0 in query, Query took 0.0004 seconds.)
Dat zijn er exact: "613940"
Snap het niet, want in prijzen_temp zijn het er maar 9576.
De ean velden in beiden zijn bigint(13).
Bij producten is de ean uniek, bij prijzen temp niet.
Ik snap het niet, maar dit is mij nog nooit overkomen.
Ik hoop dat er nog advies gegeven kan worden en zal de volgende keer met een duidelijke feedback komen, zodat anderen ook geholpen kunnen worden.
MVG
Daniel.
Gewijzigd op 14/07/2023 09:19:00 door Daniel van Seggelen
PhpMyAdmin doet immers hetzelfde als het andere.
Misschien wijkt het aantal af omdat de tabel corrupt is?
Gewijzigd op 14/07/2023 08:53:17 door - Ariën -
Toevoeging op 14/07/2023 09:07:43:
UPDATE dit geeft hetzelfde resultaat:
Code (php)
1
SELECT pp.ean, pt.ean AS ean FROM producten pp LEFT JOIN prijzen_temp pt ON pp.ean = pt.ean;
Quote:
Showing rows 0 - 24 (613940 total, 0 in query, Query took 0.0005 seconds.)
Waarom laat hij 613940 zien, terwijl er 0 query resultaat is? Normaal hoor ik dan gewoom empty results te zien en geen resultaat.
Heel vreemd dit.
zal proberen bigint te wijzigen naar varchar,
Toevoeging op 14/07/2023 09:16:10:
Code (php)
1
SELECT pt.ean,prt.ean,prt.id as prid FROM producten prt, prijzen_temp pt WHERE prt.cat_id IS NOT NULL AND pt.ean = prt.ean;
Quote:
Showing rows 0 - 24 (613940 total, 0 in query, Query took 0.0005 seconds.)
Die doet het niet,maar dit werkt beter
DIt werkt wel
Code (php)
1
SELECT * FROM `prijzen_temp` WHERE ean in (select ean from producten WHERE cat_id is NOT NULL);
maar ik heb ook de product is in de producten table nodig.
Snap niet waar dit nu fout gaat.
Toevoeging op 14/07/2023 09:24:56:
Quote:
.........route=/table/sql&db=databasenaam&table=producten
Your SQL query has been executed successfully.
EXPLAIN SELECT pt.ean,prt.ean,prt.id as prid,prt.cat_id FROM producten prt, prijzen_temp pt WHERE prt.cat_id IS NOT NULL AND pt.ean = prt.ean;
1 SIMPLE prt range ean,cat_id cat_id 5 NULL 843 Using index condition; Using where
1 SIMPLE pt ref ean ean 8 databasenaam.prt.ean 1 Using index
Your SQL query has been executed successfully.
EXPLAIN SELECT pt.ean,prt.ean,prt.id as prid,prt.cat_id FROM producten prt, prijzen_temp pt WHERE prt.cat_id IS NOT NULL AND pt.ean = prt.ean;
1 SIMPLE prt range ean,cat_id cat_id 5 NULL 843 Using index condition; Using where
1 SIMPLE pt ref ean ean 8 databasenaam.prt.ean 1 Using index
Dit is de explanation, maar word er niet wijzer uit.
Gewijzigd op 14/07/2023 11:24:41 door - Ariën -
from prijzen_temp pt, producten prt
Waarom gebruik je geen duidelijke JOIN?
deze deelverzamelingen werken bij andere resultaten in al die tijd dat ik mysql gebruik wel zonder fouten.
met een JOIN krijg ik dezelfde resultaat.
Toevoeging op 15/07/2023 04:49:06:
Beste,
Ik heb uiteindelijk Analyze table Documentation
Check table Documentation
Checksum table Documentation
Flush the table (FLUSH) Documentation
Optimize table Documentation
Repair table Documentation
En nu klijkt het te werken met de eerste query.
Code (php)
1
select *,prt.id as prid from prijzen_temp pt, producten prt where prt.site_id != 0 AND prt.site_id IS NOT NULL AND prt.cat_id IS NOT NULL AND prt.ean = pt.ean AND pt.ean != 0
dan snap ik dat het overzicht kwijt raakt.
Je mag best af en toe op die grote enterknop drukken hoor:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
SELECT *,prt.id as prid
FROM prijzen_temp pt, producten prt
WHERE
prt.site_id != 0
AND prt.site_id IS NOT NULL
AND prt.cat_id IS NOT NULL
AND prt.ean = pt.ean
AND pt.ean != 0
FROM prijzen_temp pt, producten prt
WHERE
prt.site_id != 0
AND prt.site_id IS NOT NULL
AND prt.cat_id IS NOT NULL
AND prt.ean = pt.ean
AND pt.ean != 0
opvallende zaken:
1) Je gebruikt een join middels een komma tussen de tabelnamen, terwijl dat met "JOIN" of "INNER JOIN" op de plek van de komma een stuk duidelijker was.
2) dan zou de regel AND prt.ean = pt.ean als ON prt.ean = pt.ean achter de JOIN staan. Dat is duidelijker dan verstopt in een lange regel met andere where-clauses
3) vraag: kan pt.ean of prt.ean 0 zijn?
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
SELECT *,prt.id as prid
FROM prijzen_temp pt
JOIN producten prt ON prt.ean = pt.ean
WHERE
prt.site_id != 0
AND prt.site_id IS NOT NULL
AND prt.cat_id IS NOT NULL
AND pt.ean != 0
FROM prijzen_temp pt
JOIN producten prt ON prt.ean = pt.ean
WHERE
prt.site_id != 0
AND prt.site_id IS NOT NULL
AND prt.cat_id IS NOT NULL
AND pt.ean != 0
Ik heb een vermoeden dat je query niet anders wordt als de voorwaarden in WHERE weggelaten worden, of alleen bestaan uit WHERE prt.site_id > 0
Verder de site_id, cat_id kunnen wel null zijn.
Ivo P op 17/07/2023 10:05:56:
Je mag best af en toe op die grote enterknop drukken hoor:
Bij mij is het een klein knopje :)
Jan R op 18/07/2023 09:09:41:
Bij mij is het een klein knopje :)
Dat wil ik echt niet. Ik koop altijd een ISO toetsenbord. Dat ANSI formaat met de smalle enter kan ik niet goed mee overweg (mede door een kromme pink na een val ooit).
Edit:
Spam...
Gewijzigd op 28/07/2023 15:32:43 door - Ariën -