Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 23
  1. #1
    Utente di HTML.it L'avatar di tigerjack
    Registrato dal
    Aug 2003
    Messaggi
    1,661

    [MYSQL] date due tabelle campo in comune... ordinare secondo un altro campo

    ciao,

    scusate la "distorsione" del mio topic... spero di spiegarmi con un esempio "reale"

    ho due tabelle:

    la prima tabella tab_1 è così composta:
    id | user_id | mark_id | model_id | model_name

    la seconda tabella tab_2 è così composta:
    id | name | published

    praticamente i campi mark_id di tab_1 e id di tab_2 hanno gli stessi valori...

    voglio chiedervi se è possibile ordinare in modo crescente o decrescente sencondo i valori del campo "name" della tabella tab_2...

    grazie

  2. #2
    e perche' no...

    codice:
    select *
    from tab_1
    inner join tab_2 ON  tab_2.id = tab_1.mark_id
    where ... pincopallo blabla
    order by tab_2.name

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Utente di HTML.it L'avatar di tigerjack
    Registrato dal
    Aug 2003
    Messaggi
    1,661
    ciao,
    non ho provato con INNER JOIN.... perché non avevo ancora letto la tua risposta... tra l'altro molto chiara!

    ho provato così....
    SELECT * FROM tab_1, tab_2 WHERE tab_1.mark_id=tab_2.id AND tab_1.published = '1' ORDER BY tab_2.name

    sembra funzionare.... il problema è che quando voglio recupare l'id di tab_1, mi prende sempre l'id di tab_2;

    in particolare io l'id lo prendo così: $row->id;

    come si fa?

    ora smanetto con il tuo INNER JOIN.. e ti faccio sapere.


    grazie

  4. #4
    Utente di HTML.it L'avatar di tigerjack
    Registrato dal
    Aug 2003
    Messaggi
    1,661
    ciao,

    provato con INNER JOIN mi prende sempre l'id di tab_2..

    provo ad invertire le tabelle.... caso mai...


    ti faccio sapere!


    grrrrrrazie

  5. #5
    Originariamente inviato da tigerjack
    ciao,
    non ho provato con INNER JOIN.... perché non avevo ancora letto la tua risposta... tra l'altro molto chiara!

    ho provato così....
    SELECT * FROM tab_1, tab_2 WHERE tab_1.mark_id=tab_2.id AND tab_1.published = '1' ORDER BY tab_2.name

    sembra funzionare.... il problema è che quando voglio recupare l'id di tab_1, mi prende sempre l'id di tab_2;

    in particolare io l'id lo prendo così: $row->id;

    come si fa?

    ora smanetto con il tuo INNER JOIN.. e ti faccio sapere.


    grazie
    quello che hai fatto tu e' identico a quello che ho fatto io. Un inner join.

    per quanto riguarda l'id devi considerare come una JOIN unisca le tuple corrispondenti di due o piu' tabelle in una nuova grande tabella che comprende entrambe le tuple trovate dalla condizione di equi-join. Quindi se hai dei campi che utilizzano lo stesso nome (di campo) il contenuto della seconda tabella sovrascrive il primo.

    Come fare? si devono indicare i campi che si vuol preservare con un alias e l'indicazione della tabella.

    es: select tab_1.id as id1, tab_2.id as id2 ....

    poi troverai i dati in id1, id2....

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6
    Utente di HTML.it L'avatar di tigerjack
    Registrato dal
    Aug 2003
    Messaggi
    1,661
    giusttissimo!

    infatti invertendo funziona....

    ma ora cambio secondo il tuo suggerimento!

    moooolto più elegante!!!!!


    grande piero.mac

  7. #7
    Originariamente inviato da tigerjack
    giusttissimo!

    infatti invertendo funziona....

    ma ora cambio secondo il tuo suggerimento!
    personalmente pero' preferisco dare nomi di campo diversi alle tabelle da usare in un database. Rimane piu' chiara la gestione e la stesura della documentazione di supporto al database.



    @ ma sei astigiano?

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8
    Utente di HTML.it L'avatar di tigerjack
    Registrato dal
    Aug 2003
    Messaggi
    1,661
    ma è corretto scrivere

    SELECT *, #tab_1.id as id1 FROM ecc,,,,??



    perché quella domanda?

  9. #9
    Originariamente inviato da tigerjack
    ma è corretto scrivere

    SELECT *, #tab_1.id as id1 FROM ecc,,,,??



    perché quella domanda?
    certo che si.... ma perche' quel # ???

    select *, tab1.id as id1 ....



    cosi'... comunque non e' una colpa essere astigiani ...... non preoccuparti.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  10. #10
    Utente di HTML.it L'avatar di tigerjack
    Registrato dal
    Aug 2003
    Messaggi
    1,661
    quel # è perché mi sono dimenticato di cancellarlo dall'esempio #__joomlatable

    @ci sono passato circa un mese fa da piazza Alfieri (più di una volta...di cui diverse volte a piedi ed altre con la macchina.... )


    grazie!

    p.s
    se sei di quelle parti e se ci ricapito.... una cena per sdebitarmi.... spero di aver l'onore di offrirti!!!!

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.