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

    Select su due tabelle DISTINCT su un solo campo

    Ciao,
    dovrei fare una select su due tabelle ma distinta per un solo campo.
    Quindi che mi tiri fuori i vari campi dalla tabella collezione, ma solo quelli con novità = si
    ed in più il nome della categoria ordinati per categoria.

    Una cosa del genere solo che mi da errore:

    $esito = pg_Exec($conn,"SELECT
    DISTINCT
    collezione.idcategoria,
    FROM
    collezione.idcollezione,
    collezione.idcategoria,
    collezione.collezione,
    collezione.foto,
    collezione.foto1,
    collezione.foto2,
    collezione.novita,
    collezione.descrizione,

    categoria.idcategoria,
    categoria.categoria
    WHERE
    collezione.novita = 'si'
    AND
    collezione.idcategoria = categoria.idcategoria
    ORDER by
    categoria.categoria ASC
    ");

  2. #2
    Come si chiamano le due tabelle?
    Hanno gli stessi campi?
    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

  3. #3
    Per prima cosa ci dovresti dire quale database usi... speriamo Mysql!
    CRedo che te con DISTINCT intendi dire Group By.. cioè che tra i risultati non vuoi vedere dei duplicati della tabella collezione... giusto? Ordinati per l'idcategoria (suppongo sia numerico.. quindi in ordine di inserimento) oppure per nome della categoria.. quindi ordine alfabetico

    Allora io direi.. poi ditemi anche voi se sbaglio

    SELECT
    collezione.idcollezione,
    collezione.idcategoria,
    collezione.collezione,
    collezione.foto,
    collezione.foto1,
    collezione.foto2,
    collezione.novita,
    collezione.descrizione,
    categoria.descrizione /* si chiama così questo campo?? */
    FROM collezione
    INNER JOIN categoria ON collezione.idcategoria = categoria.idcategoria
    WHERE
    collezione.novita = 'si'
    GROUP BY collezione.idcollezione
    ORDER by categoria.descrizione /* si chiama così questo campo?? */ ASC


    Ho ipotizzato forse troppe cose.. comunque se mi dai qualche altra info provo ad aiutarti!
    Fammi sapere ciao!

  4. #4
    Grazie per l'aiuto cercherò di essere più chiaro.
    Utilizzo mysql, ho 2 tabelle

    categoria
    idcategoria - categoria

    collezione
    idcollezione - idcategoria - collezione - foto - foto1 - foto2 - novita - descrizione

    adesso devo tirare fuori:
    solo le categoria (in ordina alfabetico per il campo categoria ) in cui ci siano collezioni inserite, ma con il campo novita = si , e i vari campi delle collezioni anche esse in ordine alfabetico per il campo collezione

    Allora ho una situazione del genere:

    TABELLA: categoria
    idcategoria - categoria
    1 Astucci
    2 Espositori
    3 Shoppers
    4 Cassettiere
    5 Vassoi

    TABELLA: collezione
    idcollezione - idcategoria - collezione - foto - foto1 - foto2 - novita - descrizione
    1 - 1 - PLEXIGLASS - 3.jpg - 4.jpg - ... - si - ..........
    2 - 1 - VETRO - 7.jpg - 8.jpg - ... - no - ..........
    3 - 4 - LEGNO - a.jpg - ... - ... - no - ....
    4 - 3 - PLASTICA - x.jpg - ... - ... - si - ...
    5 - 4 - FERRO - c.jpg - ... - ... - si - ...
    6 - 3 - CARTA - d.jpg - ... - ... - si - ...

    Dovrei visualizzare:
    Astucci
    PLEXIGLASS (ecc. ecc.)
    ....
    .. altri

    Cassettiere
    FERRO (ecc. ecc.)
    ....
    .. altri

    Shoppers
    CARTA (ecc. ecc.)
    PLASTICA (ecc. ecc.)
    ....
    .. altri

    Ho fatto questa SELECT ma mi tira fuori dei doppioni, da qui ho pensato di fare il DISTINCT
    es.: se ci sono 2 tipi di Shoppers, mi da 2 categoria Shoppers con 2 collezioni.

    $esito = pg_Exec($conn,"SELECT
    collezione.idcollezione,
    collezione.idcategoria,
    collezione.collezione,
    collezione.foto,
    collezione.foto1,
    collezione.foto2,
    collezione.novita,
    collezione.descrizione,

    categoria.idcategoria,
    categoria.categoria
    WHERE
    collezione.novita = 'si'
    AND
    collezione.idcategoria = categoria.idcategoria
    ORDER by
    categoria.categoria ASC
    ");

  5. #5
    La tua query darà sicuramente errore perchè te richiedi i campi di più tabelle senza un FROM esenza JOIN !!!!! quindi primo errore...

    Sul sito di mysql ho visto il manuale (basta cercare su goggle SELECT statement mysql) e DISTINCT serve per eliminare i "doppioni" dei campi che hai messo nella dichiarazione SELECT..... però diciamo che nasconde i record dei risultati che hanno i valori dei campi messi nel select tutti uguali... quindi diciamo che per noi può andare.. la i campi della tabella categoria li vedremo ripetuti, mentre quelli di collezione no... io cmq invece di usare DISTINCT preferisco fare sempre un bel GROUP BY sul campo che mi serve.. cmq..

    Prova un po' con questa.. ora ci dovremmo essere.. Come vedi l'ho ordinata per nome categoria e nome collezione... questo vuol dire che:
    Ordina per nome categoria e a parità di categoria ordina per nome collezione:

    Astucci
    PLEXIGLASS (ecc. ecc.)
    Q...
    R...

    Cassettiere
    ACCIAIO..
    ALLUMINIO...
    FERRO (ecc. ecc.)


    Shoppers
    CARTA (ecc. ecc.)
    PLASTICA (ecc. ecc.)
    TITANIO-....



    SELECT
    DISTINCT
    collezione.idcollezione,
    collezione.idcategoria,
    collezione.collezione,
    collezione.foto,
    collezione.foto1,
    collezione.foto2,
    collezione.novita,
    collezione.descrizione,
    categoria.categoria
    FROM collezione
    INNER JOIN categoria ON collezione.idcategoria = categoria.idcategoria
    WHERE
    collezione.novita = 'si'
    ORDER by categoria.categoria,collezione.collezione

  6. #6
    :quote: FUNZIONA
    GRAZIE

    Ciao alla prossima

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.