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

    [Query] Select con Union

    Ciao ho un problema con una query
    praticamente vorrei estrarre un elemento per ciascuna key che ho nel db
    Praticamente per ogni key ci sono 10 righe

    Con questa query:

    SELECT `ido` , `key` , `titolo`
    FROM `oggetti`
    WHERE `key` =1899
    LIMIT 1
    UNION
    SELECT `ido` , `key` , `titolo`
    FROM `oggetti`
    WHERE `key` =16229
    LIMIT 1
    UNION
    SELECT `ido` , `key` , `titolo`
    FROM `oggetti`
    WHERE `key` =16230
    LIMIT 1

    Mi da solo un elemento

    Mentre se uso questa query:
    SELECT `ido` , `key` , `titolo`
    FROM `oggetti`
    WHERE `key` =1899
    UNION
    SELECT `ido` , `key` , `titolo`
    FROM `oggetti`
    WHERE `key` =16229
    UNION
    SELECT `ido` , `key` , `titolo`
    FROM `oggetti`
    WHERE `key` =16230
    LIMIT 3

    Mi da si 3 risultati come richiesto ma tutti della prima key (1899)

    Mentre se uso questa:

    SELECT `ido` , `key` , `titolo`
    FROM `oggetti`
    WHERE `key` =1899
    LIMIT 1
    UNION
    SELECT `ido` , `key` , `titolo`
    FROM `oggetti`
    WHERE `key` =16229
    LIMIT 1
    UNION
    SELECT `ido` , `key` , `titolo`
    FROM `oggetti`
    WHERE `key` =16230
    LIMIT 3

    ottengo 3 risultati distinti ma non mi piace tanto come è scritta

    Ho altre possibilità ?

  2. #2
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    I dati nel db come sono strutturati?

    Se la terza funziona non credo ci siamo problemi
    think simple think ringo

  3. #3
    In che senso come sono strutturati i dati ??
    Praticamente il campo key è un int e ci sono 10 oggetti con lo stesso numero key

    Piu o meno così

    id oggetto key
    1 adsl 2
    2 router 2
    3 modem 2
    4 wifi 2
    5 monitor 3
    6 tastiera 3

    etc etc

    Dici che va bene la terza query ?

  4. #4
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    Secondo me si, può andare bene, anche perchè non saprei un altro modo per farla con una query unica.
    think simple think ringo

  5. #5
    ciao belli e bellini....

    dovresti racchiudere le singole select tra parentesi.

    codice:
    (SELECT `ido` , `key` , `titolo` 
    FROM `oggetti` 
    WHERE `key` =1899)
    UNION 
    (SELECT `ido` , `key` , `titolo` 
    FROM `oggetti` 
    WHERE `key` =16229)
    UNION 
    (SELECT `ido` , `key` , `titolo` 
    FROM `oggetti` 
    WHERE `key` =16230)
    LIMIT 3
    in questo modo il LIMIT si applica a tutte e tre.


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

  6. #6
    ma ciao piero come stai ???

    Grazie a tutti

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.