Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[MySQL] Afbeelding opvragen van categorie

Pagina: 1
Acties:

  • ZeroXT
  • Registratie: December 2007
  • Laatst online: 26-11 11:58
Beste mensen,

Ik probeer alle categorieen uit de database te halen met daarbij de laatst toegevoegde wallpaper als afbeelding.

Tabellen:
- wallpapers
- wallpapers_koppel
- wallpapers_subcategorie
- wallpapers_categorie

wallpapers_koppel koppelt de wallpaper_id uit de tabel wallpapers met de subcategorie_id uit wallpapers_subcategorie. In de tabel wallpapers_subcategorie staat een link naar de tabel wallpapers_categorie.

Nu krijg ik dit alles voor elkaar alleen zijn alle afbeeldingen hetzelfde.

Code:
SQL:
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
SELECT 
    WC.wallpaper_categorie_id, 
    WC.wallpaper_categorie_titel, 
    (
        SELECT CONCAT(W.wallpaper_titel, '.', W.wallpaper_extensie)
                                                
        FROM 
            wallpapers W, 
            wallpapers_koppel WK, 
            wallpapers_subcategorie WS
    
        WHERE 
            WK.wallpaper_koppel_subcategorie_id = WS.wallpaper_subcategorie_id AND
            WS.wallpaper_subcategorie_categorie_id = WC.wallpaper_categorie_id
                                                        
        ORDER BY 
            W.wallpaper_id DESC
                                                        
        LIMIT 
            0,1
        
    ) as afbeelding
    
FROM 
    wallpapers_categorie WC
                                                
ORDER BY 
    wallpaper_categorie_titel


Ik krijg dus maar 1 zelfde afbeelding terug terwijl ik dus alle categorieën verschillende afbeeldingen wil laten teruggeven maar dan de laatst toegevoegde voor die categorie.

[ Voor 3% gewijzigd door ZeroXT op 25-02-2011 15:14 ]


  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Je hebt niet een WHERE w.ID = wk.wallpaper_ID in je subquerie
Ik zou ook eerder INNER JOIN gebruiken ipv FROM tabel1, tabel2, tabel3 om dit soort fouten te voorkomen

[ Voor 46% gewijzigd door Guillome op 25-02-2011 15:32 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Verwijderd

Ik zou iets in de geest doen van

SELECT

wallpaper_categorie_titel,
wallpaper_titel, wallpaper_extensie

FROM
wallpaper
JOIN
wallpapers_koppel USING (wallpaper_categorie_id)
JOIN
wallpapers_subcategorie USING (wallpaper_categorie_id)
GROUP BY wallpaper_categorie_id HAVING MAX(wallpaper_id)

Ik snap alleen niet waarom je subcategorien als losse tabel hebt, ik zou eerder gaan voor een parent-child constuctie in de categorien tabel. Als een categorie een parentcategorie heeft, is het een subcategorie, anders is het een hoofdcategorie

Kan een wallpaper trouwens in meerdere categorien voorkomen ? zo ja ... okay .. zo nee ... waarom dan een koppeltabel ?

[ Voor 15% gewijzigd door Verwijderd op 25-02-2011 15:40 ]


  • ZeroXT
  • Registratie: December 2007
  • Laatst online: 26-11 11:58
Hartelijk bedankt voor de antwoorden. Het is gelukt en om antwoord te geven op thioz vraag of de wallpaper in meedere sub / categorieen kan voorkomen; Ja denk maar aan een getekende hond en een kat op een wallpaper. Deze hoort dan in de hoofdcategorie Dieren en Digital Art en de subcategorie Honden en Katten van Dieren.

Nogmaals bedankt!

Verwijderd

Ik had trouwens wel een foute redenatie gemaakt ... die having werkt dus niet met grouping

een max zou wel helpen :

select MAX(wallpaper_id) as wpid , wallpaper.* , cat_id
FROM
wallpaper
JOIN
wallpaper_wallpaper_cat USING (wallpaper_id)
JOIN wallpaper_cat USING (cat_id)
GROUP BY cat_id

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 11:59

Creepy

Tactical Espionage Splatterer

As usual: let even op de group by mocht je ooit eens willen overstappen naar iets anders dan MySQL, want dan is je query stuk.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • _js_
  • Registratie: Oktober 2002
  • Laatst online: 25-11 01:01
Creepy schreef op vrijdag 25 februari 2011 @ 16:19:
As usual: let even op de group by mocht je ooit eens willen overstappen naar iets anders dan MySQL, want dan is je query stuk.
De query's van thioz zijn ook op MySQL stuk (want het zal vast niet de bedoeling zijn dat er informatie van wallpapers terugkomt die niet bij de hoogste wallpaper_id hoort).
Pagina: 1