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

    [Mysql] Query per tabelle "multi campo"

    Ciao.
    Si, l'oggetto della richiesta è un pò misterioso; cerco di spiegarmi meglio.
    Ho due tabelle:
    Tabella COMPUTERS
    computerid,computername

    esempio:
    1, computer1
    2, computer2

    Tabella COMPUTERSPROPERTIES
    computerid,propertyname,propertyvalue

    esempio
    1, harddisk, 80000
    1, ram, 4096
    1, ip, 192.168.0.1
    2, harddisk, 320000
    2, ram, 2048
    2, ip, 192.168.0.2

    Dovrei ottenere con una singola query un report tipo questo (ma l'avrete già immaginato)

    computer1, 80000, 4096, 192.168.0.1
    computer2, 320000, 2048, 192.168.0.2

    Mi aiutate a costruire la query ?

    Grazie.

  2. #2
    codice:
    SELECT 
    
    computername,
    (SELECT propertyvalue FROM COMPUTERSPROPERTIES WHERE propertyname = 'harddisk' AND computerid = c.computerid) AS val1,
    (SELECT propertyvalue FROM COMPUTERSPROPERTIES WHERE propertyname = 'ram' AND computerid = c.computerid) AS val1,
    (SELECT propertyvalue FROM COMPUTERSPROPERTIES WHERE propertyname = 'ip' AND computerid = c.computerid) AS val1
    
    
    FROM 
    COMPUTERS AS c

  3. #3

  4. #4
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Un po' pesante come soluzione.

    Questa dovrebbe essere più performante

    SELECT c.computername, p1.propertyvalue as harddisk, p2.propertyvalue as ram, p3.propertyvalue as ip
    FROM computers c
    LEFT JOIN computerproperties p1 on (c.computerid = p1.computerid and p1.propertyname = 'harddisk')
    LEFT JOIN computerproperties p2 on (c.computerid = p2.computerid and p2.propertyname = 'ram')
    LEFT JOIN computerproperties p3 on (c.computerid = p3.computerid and p3.propertyname = 'ip')


    Però tutta la questione ha senso solo se le proprietà sono sempre quelle, nel qual caso non ha molto senso averle in una tabella separata

  5. #5

  6. #6
    In realtà a livello di esecuzione dati non ha molta differenza in quanto
    mysql utilizza in entrambe i casi

    una primary key a lunghezza 261
    Vi aspetto sul mio sito
    creato per tutti coloro che necessitano di aiuto, scripts ecc.
    http://www.dbpersister.com
    http://principeorazio.wordpress.com/

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.