Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    3,072

    [MySQL] Select all'interno di un'altra select

    Ciao a tutti, partendo da una query del tipo:

    select tabella.* From Tabella1
    INNER JOIN Tabella2 ON Tabella1.id=Tabella2.id_Tabella1

    vorrei contare quanti elementi collegati a questa tabella ho in una Tabella2 con

    id - id_Tabella1 - quantità

    In sintesi, in Tabella2 ho il riferimento all'id di Tabella1, e dalla query principale vorrei avere un campo "Quantita" che mi visualizzi quanti record ci sono collegati.
    (considerando che non tutti i record di Tabella1 possono avere degli elementi in Tabella2, in questi casi avrei "Quantita" = 0


    Thanks

  2. #2
    select *, count(*) as quantita
    ..... etc

    la inner join considera solo le equi-join definite in ON. Mi pare forse troppo semplice come soluzione e potrebbe essere che non ho bene inteso la tua domanda.

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

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    3,072
    Infatti intendevo altro....

    la query l'ho postata, devo aggiungere un nuovo campo che è la risultante di un ulteriore query

    a livello logico sarebbe

    select tabella.*, (select count(*) from Tabella2 where Tabella2.id_Tabella1 = Tabella1.id) AS Quantita From Tabella1
    INNER JOIN Tabella2 ON Tabella1.id=Tabella2.id_Tabella1


    Quindi nella select principale devo visualizzare un campo che è deriva da un'altra select (recuperando i record collegati alla query principale)

  4. #4
    ancora mi sfugge qualcosa. Non puoi contare quello che non c'e' per il semplice fatto che non c'e'. Puoi invece contare quello che in tabella 1 non e' presente in tabella 2, questo si.

    In pratica con una left join:

    select *
    from tab1
    left join tab2 on tab1.id = tab2.id
    where tab2.id IS NULL

    come saprai left join prende TUTTI i record della tabella in from e rende NULL su tab2 quando il record di tab1 non trova la sua relazione nella left join. Puoi contare i campi NULL

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

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    3,072
    mmmm ma io vorrei:

    visualizzare determinati campi della Tabella1, aggiungere un campo preso dalla Tabella2 con il numero di campi in JOIN

  6. #6
    Originariamente inviato da Valeria75_bis
    mmmm ma io vorrei:

    visualizzare determinati campi della Tabella1, aggiungere un campo preso dalla Tabella2 con il numero di campi in JOIN
    Ma questo gia' lo hai fatto....
    codice:
    select tabella.*, count(*) as tot 
    From Tabella1
    INNER JOIN Tabella2 ON Tabella1.id=Tabella2.id_Tabella1
    group by id
    devi solo raggruppare i campi che vuoi conteggiare. Altrimenti ti conterebbe per tutti i record sempre lo stesso numero.

    Ovviamente i group by ti rendera' solo un campo con il totale dei record trovati per ogni id.

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

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    3,072
    Non ho assolutamente capito

    Se metto in JOIN e faccio un group by non ritorna quello che voglio (quello che ho scritto)

    :-(

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    3,072
    Nella mia query ho altre JOIN, oltre a quella per la quale voglio calcolare il numero di recor collegati.

    Quindi ho diverse

    INNER JOIN
    LEFT OUTER JOIN
    ecc...


    Nei campi visualizzati devo visualizzare un nuovo campo con il totale di record collegati (numero di record) presenti in una specifica delle tabelle in JOIN.... e visualizzare 0 quando non ci sono recordo collegati (sempre nella "famosa" tabella in JOIN)

    Come posso fare?

    Grazie

  9. #9
    puoi fare un esempio pratico? grazie

  10. #10
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    3,072
    Ecco un esempio


    Tabella1
    1 - Rec1 - Desc1
    2 - Rec2 - Desc2
    3 - Rec3 - Desc3
    4 - Rec4 - Desc4


    Tabella2 (la seconda colonna indica l'id di Tabella1, quindi il campo usando per la JOIN tra Tabella2.id_Tabella1 e Tabella1.id)
    1 - 1 - ColRec1_A
    2 - 1 - ColRec1_B
    3 - 1 - ColRec1_C
    4 - 2 - ColRec2_D
    5 - 3 - ColRec3_E



    considerando che Tabella1 è in JOIN, INNER e LEFT, anche con altre tabelle, io voglio visualizzare

    1 - Rec1 - Desc1 - 3
    2 - Rec2 - Desc2 - 1
    3 - Rec3 - Desc3 - 1
    4 - Rec4 - Desc4 - 0


    Quindi vorrei visualizzare determinati campi della Tabella1, altri campi in JOIN di altre tabelle e, per la Tabella2, un contatore con il numero di record in JOIN (0 quando non ci sono elementi in Tabella2)


    Grazie

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 © 2026 vBulletin Solutions, Inc. All rights reserved.