Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    aiuto per query categorie-sottocategorie-articoli

    Salve ragazzi ho questo problema:
    mi trovo 2 tabelle:
    1 tabella CATEGORIE con delle sottocategorie al suo interno
    Esempio:

    ID PADRE CATEGORIA
    1 0 NOTIZIE
    2 1 spettacoli
    3 1 eventi
    4 0 MUSICA
    5 4 hip hop
    ecc..

    e 1 tabella NOTIZIE con gli articoli agganciati alle sottocategorie.
    Esempio:

    ID CATEGORIA TITOLO ORDINE
    1 2 (spettacoli) BLA BLA 01
    1 3 (eventi) BLA BLA 00
    1 2 (spettacoli) BLA BLA 01

    DEVO:
    - trovare tutti gli articoli inseriti nelle sottocategorie di NOTIZIE o MUSICA (le macrocategorie)
    - una volta individuato tutti gli articoli inseriti nelle sottocategorie di NOTIZIE, devo estrapolare solo 1 articolo che abbia come ORDINE il valore 01

    qualcuno sa' darmi una mano?

    Ho fatto questo script ma non funzia.




    Codice PHP:
    //trovo le sottocategorie di NOTIZIE
    $s="SELECT * FROM categorie WHERE padre='1'";
    $r=mysql_query($s);
    while(
    $d=mysql_fetch_array($r)){
        
    // trovo gli articoli inseriti nelle sottocategorie di NOTIZIE ed estrapolo l'articolo con ORDINE= 01
        
    $s="SELECT * FROM notizie WHERE categoria='$d[id]' and ordine='01' ORDER BY data_ins";
        
    $r=mysql_query($s);
        
    $d=mysql_fetch_array($r);
        echo 
    $d[titolo]

    Il problema è che se ho 2 articoli inseriti in 2 sottocategorie diverse con ORDINE 01 mi fa vedere 2 articoli. Io voglio far vedere 1 solo articolo (l'ultimo inserito tra tutte le sottocategorie di Notizie).

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    10
    se nn ho capito male ogni volta ke carici un articolo lo salvi nella tabella notizie..

    ID notizia TITOLO
    0 a1
    1 a2
    2 a3
    3 a4

    quindi in teoria l'ultimo articolo inserito è quello più recente..
    con una query selezioni l'elenco degli articoli di una determinata categoria e ordine..
    successivamente vai a cercare in questo elenco l'articolo con l'id più alto e quindi quello inserito più di recente...

    SELECT * FROM tab WHERE id=(SELECT MAX(id) FROM tab)...

    prova cosi..

    alrimenti basta avere nella tabella un campo DATE e scegliere quella più recente..

    ciaoooo

  3. #3
    non è così invece..
    io ho una serie di articoli inseriti in categorie che fanno parte di una MACROCATEGORIA
    Es.
    NOTIZIE (macrocategoria)
    - spettacoli (sottocategoria)
    - eventi (sottocategoria)
    - ecc..

    APPUNTAMENTI (macrocategoria)
    - mostre (sottocategoria)
    - teatro (sottocategoria)
    - ecc..

    Ho una gestione dinamica come questa anche per altre macrocategorie.
    Gli articoli sono associati alla sottocategoria. (spettacoli, eventi ecc..)
    Io devo fare una query che mi prenda l'ultimo articolo con valore 01 (ordine)
    tra tutte le sottocategorie di NOTIZIE.
    Capito come?
    Praticamente dovrei prendere un determinato articolo inserito in tutte le sottocategorie di NOTIZIE.

  4. #4
    Utente di HTML.it L'avatar di hyb
    Registrato dal
    Aug 2003
    Messaggi
    424
    Non è chiarissimo.
    Comunque se hai il campo data_ins che ti dà la garanzia dell'articolo recente metti un LIMIT 1, anche perchè nella query tu chiedi i dati che soddisfano certi requisiti e... che abbiamo la priorità '01' (io toglierei 'sto zero cmq)... ed è logico che ti escano più righe.

  5. #5
    ho messo anch'io il limit ma non serve perchè la query fa il ciclo di ogni sottocategoria e mi estrapola 1 articolo per ogni sottocategoria quindi se ho 3 sottocategorie mi ma vedere 3 risultati
    (i 3 articoli con valore 1 presenti per ogni sottocategoria)
    capito come?

  6. #6
    Utente di HTML.it L'avatar di hyb
    Registrato dal
    Aug 2003
    Messaggi
    424
    si quasi capito.

    con la prima query chiedi le macro categorie, poi con il ciclo query nuovamente per ogni macrocategoria in cerca della piu recente.

    quelle che non capisco è notizie.

    ID CATEGORIA TITOLO ORDINE
    1 2 (spettacoli) BLA BLA 01
    1 3 (eventi) BLA BLA 00
    1 2 (spettacoli) BLA BLA 01

    il 2,3,2 si rideriscono a idPadre ovvero alla categoria, ma l'id? ripeti l'id macrocategoria? e perchè se so gia in relazione? il problema è che dovresti quindi mettere nella query o un join eliminando cmq id macrocat da notizie, o se vuoi mantenerlo aggiungi un AND id = idmacrocategoria (1 notizie)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.