Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 23
  1. #1

    [mysql] query su due tabelle

    Dovrei fare una query su due tabelle dalla tabella A estraggo un id, nella tabella B questo id puo corrispondere ad un solo elemento oppure a piu elementi, nel caso di piu elementi uno avra anche il campo preferito !=NULL.
    Per spiegarci
    TABELLA A:
    id| auto|
    1 |fiat uno|
    2 |fiat croma|

    TABELLA B:
    id|colore|preferito
    1|rosso|NULL
    2|verde|1
    2|giallo|null

    Percio quando faccio una query su tutti i modelli di auto devo avere che la fiat uno avra' colore rosso la croma colore verde
    Come posso fare? grazie in anticipo

  2. #2
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    SELECT A.auto, B.colore, B.preferito
    FROM A INNER JOIN B ON A.id = B.id
    WHERE (((B.preferito) Is Null));

  3. #3
    Cosi la query e' errata mi ritorna i colori sbagliati dato che della croma non mi ritorna il verde ma gli altri due colori

  4. #4
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Mi sembrava troppo facile !!!
    in effetti sono più query elementari l'una dentro l'altra

    Prova cosi dovrebbe funzionare.
    codice:
    SELECT A.auto AS q6Au, qq5.q3co
    FROM (SELECT qq3.q3id, qq3.q3co FROM (SELECT B.id AS q3id, B.colore AS q3co, (nz([preferito],0)) AS cp FROM B)  AS qq3 INNER JOIN (SELECT B.id AS q2id, (Max(nz([preferito],0))) AS mcp FROM B GROUP BY B.id)  AS qq2 ON (qq3.cp=qq2.mcp) AND (qq3.q3id=qq2.q2id))  AS qq5 INNER JOIN A ON qq5.q3id=A.id;

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,326

    Re: [mysql] query su due tabelle

    Originariamente inviato da kappaekappa
    Dovrei fare una query su due tabelle dalla tabella A estraggo un id, nella tabella B questo id puo corrispondere ad un solo elemento oppure a piu elementi, nel caso di piu elementi uno avra anche il campo preferito !=NULL.
    Per spiegarci
    TABELLA A:
    id| auto|
    1 |fiat uno|
    2 |fiat croma|

    TABELLA B:
    id|colore|preferito
    1|rosso|NULL
    2|verde|1
    2|giallo|null

    Percio quando faccio una query su tutti i modelli di auto devo avere che la fiat uno avra' colore rosso la croma colore verde
    Come posso fare? grazie in anticipo
    ciao,

    a mio parere credo che devi iniziare con ''correggere'' la struttura della tabella B:

    TABELLA B:
    id|colore|preferito|IdTabellaA
    1|rosso|NULL|1
    2|verde|1|2
    3|giallo|null|2

    ti consiglierei di inserire in ogni struttura di tabella il campo 'id integer primary key'.

    codice:
    CREATE TABLE A(
        ID                    INTEGER NOT NULL PRIMARY KEY,
        AUTO                  VARCHAR(50));
    
    CREATE TABLE B(
        ID                    INTEGER NOT NULL PRIMARY KEY,
        COLORE                VARCHAR(50),
        PREFERITO             VARCHAR(50),
        IDTABELLAA            INTEGER REFERENCES A(ID));
    codice:
    select 
    a.id,
    a.auto,
    b.id,
    b.colore,
    b.preferito,
    b.idtabellaa
    from B
    left join A on A.ID=B.idtabellaA
    ciao

  6. #6
    nman sinceramente nella tua query ci capisco molto poco e non funziona
    123delphi321 neanche la tua query,pur cambiando le tabelle mi da il risultato sperato dato che mi estrae tutte le auto e tutti i colori

  7. #7
    Per la precisione ritorna questo errore

    Mysql said :You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '[preferito],0)) AS cp FROM B) AS qq3 INNER JOIN (SELECT B.id AS q2id, (Max(nz([' at line 2

  8. #8
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Si è vero non funziona.
    La ho testata con Access2007 e funziona bene ma con MySql Non Va


    Ho provato ad aggiustarla ma non ho sufficiente esperienza in MySql
    ( Io arrivo dall'altra sponda di Microsoft)


    Saluti

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,326
    Originariamente inviato da kappaekappa
    nman sinceramente nella tua query ci capisco molto poco e non funziona
    123delphi321 neanche la tua query,pur cambiando le tabelle mi da il risultato sperato dato che mi estrae tutte le auto e tutti i colori
    la query che ti ho postato era uin esempio scritto in un SQL standard ma sicuramente testato con interbase/firebird.

    Originariamente inviato da kappaekappa
    Per la precisione ritorna questo errore

    Mysql said :You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '[preferito],0)) AS cp FROM B) AS qq3 INNER JOIN (SELECT B.id AS q2id, (Max(nz([' at line 2
    questo non mi sembra un errore proveniente dalla esecuzione della query da me scritta.

    a tutti i modi con la query che ti ho scritto precedentemente ottieni l'elenco di tutti i record della tabella B e per ognuno di esso e' associato l'auto in questione.

    se vuoi prova a postare struttura, dati e il risultato che vorresti

    ciao

  10. #10
    123delphi321 l'errore era riferito alla query di nman, trovi struttura dati e risultato voluto nel primo post.
    Grazie ugualmente nman

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.