[MySQL/PHP] Webshop query

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • DAMAGE
  • Registratie: December 2001
  • Laatst online: 17:53

DAMAGE

a.k.a. Rice_NL

Topicstarter
Hey Mensen, ik heb een webshop in PHP, en deze is op basis van OsCommerce.

Nu ben ik bezig met een gedeelte te schrijven in PHP en MySQL, dat aanbiedingen/een 3 tal producten toont uit een bepaalde categorie. Dit gaat prima tot nu toe. Enkel krijg ik me mijn query een aantal gegevens niet terug uit de database. Ik doe kennelijk nog iets niet goed.

Het is een hele grote query, en ik zie echt door de bomen het bos niet meer. Heb er al een aatal uur aan vergooit. Dit is em:

PHP:
1
select distinct p.products_image as image, p.products_price as oudeprijs, p.products_id, p.products_price, p.products_image, p.products_tax_class_id, if(s.status, s.specials_new_products_price, p.products_price) as nieuweprijs from " . TABLE_PRODUCTS . " p left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c, " . TABLE_CATEGORIES . " c where p.products_id = p2c.products_id and p2c.categories_id = c.categories_id and c.parent_id = '" . (int)$new_products_category_id . "' and p.products_status = '1' order by p.products_date_added desc limit 3


Zo krijg ik bijvoorbeeld p.products_image as image niet terug op een of andere manier. Ik heb hier al een tijdje op zitten klooien maar krijg het nog steeds niet goed helaas :( Ik gok nu dus dat het door de distinct komt, kan ik ook op een of andere manier de image terug krijgen als gewoon normaal veld? het enige wat in het veld products_image staat is bijvoorbeeld afbeelding.jpg

Hier een SQL guru die ziet wat ik niet zie? Alvast heel erg bedankt voor de moeite want ik word hier bijna gek 8)7

Lian Li O11 Dynamic EVO | Corsair HX1500i | Intel i9 13900K | ASUS Maximus HERO Z790 | 32GB GSkill Trident Z5 7200 DDR5 | Samsung 980 Pro 2TB | RTX 4080 | Simucube 2 Pro wheel


Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
SELECT DISTINCT 
  p.products_image as image, 
  p.products_price as oudeprijs, 
  p.products_id, 
  p.products_price, p.products_image, 
  p.products_tax_class_id, 
  if(s.status, s.specials_new_products_price, p.products_price) as nieuweprijs 

FROM  
  p LEFT JOIN s on p.products_id = s.products_id,
  p2c, c 

WHERE 
  p.products_id = p2c.products_id 
  and p2c.categories_id = c.categories_id 
  and c.parent_id = $new_products_category_id
  and p.products_status = 1

ORDER BY 
  p.products_date_added DESC 

LIMIT
  3


Even wat leesbaarder gemaakt, nu kunnen we eens kijken. Ik snap overigens nooit waarom mensen hun tablenames in constants proppen, zijn ze zo slecht in namen verzinnen dat die tablenames daadwerkelijk veranderen?

Edit:
nogmaals opgeschoond naar cleane sql, aliasing verwijderd.

edit2:
En wat is nu precies het probleem? Geef eens een voorbeeld.

[ Voor 29% gewijzigd door Grijze Vos op 05-02-2007 11:30 ]

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

  • osorkon!
  • Registratie: September 2006
  • Laatst online: 10-01 18:56
Tip: gebruik haakjes bij je join:
LEFT JOIN s ON (p.products_id = s.products_id)

Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Nu online
Waarom ben je niet consequent in je manier van joinen ? De ene keer gebruik je de JOIN syntax, en de andere keer join je in je where clause ....
p.products_image as image niet terug op een of andere manier
Hoe krijg je het dan wel terug ?
products_image, de naam doet me denken aan een BLOB veld; in de meeste DBMS'en kan je geen DISTINCT op een blob-veld toepassen; waarschijnlijk dat MySQL daar ook de mist in gaat ?
het enige wat in het veld products_image staat is bijvoorbeeld afbeelding.jpg
Staat daar dan de string 'afbeelding.jpg' in (het pad dus naar je afbeelding), of de afbeelding zelf ?

Ben je wel zeker dat je hier een DISTINCT nodig hebt ?
osorkon! schreef op maandag 05 februari 2007 @ 12:42:
Tip: gebruik haakjes bij je join:
LEFT JOIN s ON (p.products_id = s.products_id)
waarom ?

[ Voor 71% gewijzigd door whoami op 05-02-2007 12:47 ]

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • DAMAGE
  • Registratie: December 2001
  • Laatst online: 17:53

DAMAGE

a.k.a. Rice_NL

Topicstarter
Er staat inderdaad alleen een bestandsnaam in... dus niks geen informatie om de image op tebouwen dus..

ik kan het nog wel eens proberen zonder een distinct, maar leek mij de meest logische oplossing zo.. Ben nu even met een ander project bezig, dus misschien aan het eind van de middag even kijken of het zonder distinct beter gaat :)

Lian Li O11 Dynamic EVO | Corsair HX1500i | Intel i9 13900K | ASUS Maximus HERO Z790 | 32GB GSkill Trident Z5 7200 DDR5 | Samsung 980 Pro 2TB | RTX 4080 | Simucube 2 Pro wheel