Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: Order by insieme

  1. #1

    Order by insieme

    Ciao, il mio problema è il seguente:
    "devo fare una SELECT del tipo

    SELECT * FROM tabella1 ORDER BY idnumero

    La struttura delle tabelle è la seguente:

    tabella1 (idtabella1,nome, cognome, idnumero)
    tabella2 (idnumero, colore)


    Il problema è che la tabella2 contiene record non ordinati e cioè

    (1, giallo), (2,rosso), (3, bianco), (4,blu) ecc. ecc.

    quindi non posso fare un ordinamento per idnumero perchè non c'è relazione tra l'idnumero ed il colore.

    Avevo pensato di inserire nella query una cosa del genere

    SELECT * FROM tabella1 ORDER BY idnumero IN (SELECT idnumero FROM tabella2 ORDER BY colore)

    ma non funziona.
    COme risolvo il problema?

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    codice:
    select tab1.idtabella1,tab1.nome,tab1.cognome,tab2.colore
    from tabella1 as tab1
    inner join tabella2 as tab2
    on tab1.idnumero = tab2.idnumero
    order by tab2.idnumero asc

  3. #3
    Utente di HTML.it L'avatar di alpeweb
    Registrato dal
    Oct 2002
    Messaggi
    1,691
    Io non ho capito niente.

    ma non puoi dire semplicemente come vorresti l'ordinamento?
    ...altri 5 anni di purga...

  4. #4
    La soluzione proposta funziona.
    Tuttavia volevo aggiungere una condizione where

    select tab1.idtabella1,tab1.nome,tab1.cognome,tab2.colore
    from tabella1 as tab1
    inner join tabella2 as tab2
    on tab1.idnumero = tab2.idnumero
    where condizione
    order by tab2.idnumero asc

    e la query mi da un error.
    Perchè?

  5. #5
    Problema risolto, grazie mille.

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Bisognerebbe sapere cosa c'è come where condizione.

    edit.ok.

  7. #7
    Adesso ho un altro problema nella creazione di una query di questo tipo.

    Ho un elenco prodotti del tipo (marca modello)

    prod1 xyz
    prod1 abc
    prod1 def
    prod2 abc
    prod3 abc
    prod3 def

    vorrei creare una query che mi visualizza questo elenco

    prod1 xyz
    prod2 abc
    prod3 abc

    cioè per ogni marca prodotto mi visualizzi solo il primo.

    Come posso fare?

  8. #8
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    codice:
    select *
    from
    (select min(id) as id from tabella
    group by campo_marca) as tab1
    left join tabella as tab2 ON tab1.id = tab2.id
    ovviamente la tua versione di mysql deve supportare le subquery.

  9. #9
    Mi sono espresso male.
    Non esistono 2 campi (uno marca ed uno modello) ma un unico campo che contiene sia la marca che il modello (ad es. prod1 xyz).
    Quindi dovrei creare una query con un controllo del tipo WHERE nomecampo LIKE 'valore'.
    Come posso risolvere questo problema?

  10. #10
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Originariamente inviato da triple h
    Come posso risolvere questo problema?
    Inizia a normalizzare la tabella e a usare due campi distinti.

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.