Heb hier een mysql (mariadb 10.1) query

"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

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


					$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.'--+--';

}



Hoe kan dit verschillend zijn?
Weet je wat het is Daniel?

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.
Ik waardeer het zeer veel. Heb het soms idd te druk met allerleij dingen die er nu aan de hand zijn, dat ik het weleens vergeet.

Niet met kwade bedoelingen. Waardeer alle hulp.

Weet zo'n query:

SELECT pt.ean,pp.ean FROM producten pp, prijzen_temp pt WHERE pt.ean = pp.ean


Krijg alle resultaten in phpmysql te zien van de table producten:

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.

Het enige wat ik me zou kunnen indenken, is een PEBCAK-probleem waarbij je in twee verschillende databases kijkt.

PhpMyAdmin doet immers hetzelfde als het andere.

Misschien wijkt het aantal af omdat de tabel corrupt is?
Nee, ik kijk niet in 2 verschillende databases, het is exact dezelfde database met 2 verschillende tabellen

[size=xsmall]Toevoeging op 14/07/2023 09:07:43:[/size]

UPDATE dit geeft hetzelfde resultaat:


SELECT pp.ean, pt.ean AS ean FROM producten pp LEFT JOIN prijzen_temp pt ON pp.ean = pt.ean;


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,


[size=xsmall]Toevoeging op 14/07/2023 09:16:10:[/size]

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;


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


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.


[size=xsmall]Toevoeging op 14/07/2023 09:24:56:[/size]


.........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



Dit is de explanation, maar word er niet wijzer uit.
En een ANALYZE TABLE query?
Door deze komma selecteer je uit twee (deel)verzamelingen, wat vermoedelijk onvoorspelbare resultaten geeft:

from prijzen_temp pt, producten prt

Waarom gebruik je geen duidelijke JOIN?
ANALYZE en OPMTIMIZE table, geven status ok door.

deze deelverzamelingen werken bij andere resultaten in al die tijd dat ik mysql gebruik wel zonder fouten.
met een JOIN krijg ik dezelfde resultaat.

[size=xsmall]Toevoeging op 15/07/2023 04:49:06:[/size]

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.
als jij query's in 1 lange regel schrijft als

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:


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


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?




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


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
Een pt.ean kan geen 0 zijn, dus die lijkt dan weggehaald te kunnen?
Verder de site_id, cat_id kunnen wel null zijn.
off-topic
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 :)

Reageren