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

    [MySQL] problema scrittura query

    Salve,

    vi pongo il mio problema sulla costruzione di una query.

    ho due tabelle: tabellaA (campoA1 campoA2 campoA3) e tabellaB (campoB1 campoB2)

    la query che io eseguo è la seguente:

    SELECT campoA1, count(*) as n FROM tabellaA
    WHERE campoA2>0 AND
    campoA3='PIPPO'
    GROUP BY campoA1;

    io però vorrei nella query delle ristrezioni ed a questo mi serve la tabellaB: in pratica il contenuto del campoA1 è presente nei record del campoB1 della tabellaB. In questa tabella se ci sono record con campoB1 uguale la distinzione fra di essi avviene attraverso il CampoB2.

    Io vorrei che il risultato della mia query mi presenti i valori del campoA1 presenti nella tabellaA distinti attraverso il campoB2 della tabellaB e ovviamente numerati.

    Potrebbe essere questa la soluzione?

    SELECT A.campoA1, B.campoB2, count(*) as n
    FROM tabellaA as A
    tabellaB as B
    WHERE A.campoA2>0 AND
    A.campoA3='PIPPO' AND
    A.campoA1=B.campoB1
    GROUP BY A.campoA1;

    cioè basta inserire anche B.campoB2 e la relazione A.campoA1=B.campoB1 per ottenere una distinzione in funzione del campoB2 della tabellaB?
    RiKkArDo on IRCnet

  2. #2
    Utente di HTML.it L'avatar di Avalox
    Registrato dal
    Nov 2003
    Messaggi
    302
    mmm... non ho capito molto di quello che hai scritto... :master:

    Sicuramente puoi risolvere il tuo problema con una JOIN...

    Se fai un esempio concreto, forse si capisce meglio....

    A disposizione

  3. #3
    Scusatemi per il Caxxxo, ...

    allora faccio un es. più concreto.

    Ho tre tabelle: tab1, tab2 e tab3.

    tab1 contiene la lista degli animali presenti in uno zoo. In particolare aggiungo un reecord alla tabella1 ogni volta che do da mangiare all'animale inserendo come dati: nome animale, tipo di animale, identificatore e grammi di cibo che gli ho fornito I suoi campi sono: nome dell'animale, tipo di animale, identificatore e grammi di cibo

    Ad esempio

    Flash cane 1 800
    Pit gatto 2 324
    Jack pesce 3 546
    Pit cane 4 345

    tab2 è una tabella che associa l'identificatore della tabella1 con un identificatore univoc che identifica l'animale quindi ha i campi identificatore ,identificatore_univoco:

    Ad esempio

    1 11111111
    2 12121212
    3 13131313
    4 33333333

    tab3 è una tabella relazionale che associa l'indentificatore univoco dell'animale al nome con i campi identificatore_univoco, nome

    Ad esempio

    11111111 Flash
    12121212 Pit
    13131313 Jack
    33333333 Pit

    Io voglio realizzare una query che mi ritorni dei record con le seguenti info:

    nome animale; identificatore_univoco; numero di volte che l'animale ha mangiato
    RiKkArDo on IRCnet

  4. #4
    Utente di HTML.it L'avatar di Avalox
    Registrato dal
    Nov 2003
    Messaggi
    302
    Ok. Allora, prima di tutto l'ultima tabella è inutile...



    codice:
    SELECT tab1.nome, tab2.id_univoco, COUNT(tab1.*)
    FROM tab1 
    LEFT JOIN tab2
     ON tab1.id = tab2.id
    GROUP BY tab1.id
    Perchè non tieni una tabella con le info relative agli animali (id_univoco, nome, tipo_animale) e una dove registri solo quanto mangiano (id_univoco, grammi)? In questa potresti anche aggiungere la data e l'ora della somministrazione e creare diverse statistiche....

  5. #5
    grazie per l'aiuto,

    devo dire che l'esempio che ho portato è la semplificazione di un insieme di tabelle di più database sui quali devo fare delle statistiche. Ahimè così sono stati fatti e così me li tengo :°

    Ignoravo il comando LEFT e JOIN. vado a leggere la documentazione poi se non capisco magari torno qui

    Grazie ancora
    RiKkArDo on IRCnet

  6. #6
    dimenticavo un piccolo particolare: le tabelle fanno parte di database differenti. Il Join funziona lo stesso?
    RiKkArDo on IRCnet

  7. #7
    Utente di HTML.it L'avatar di Avalox
    Registrato dal
    Nov 2003
    Messaggi
    302
    database differenti?

    Allora non credo proprio che funzioni... non ho mai lavorato con database differenti allo stesso tempo... o meglio, fatto query con tabelle site su database differenti

    e poi, per fare una query, non serve l'identificativo della connessione al database? Come fai se usi database differenti?

    Fammi sapere se risolvi perchè mi incuriosisce molto...

  8. #8
    Originariamente inviato da Avalox
    SELECT tab1.nome, tab2.id_univoco, COUNT(tab1.*)
    l'argomento di count non mi convince ... è in stretta relazione con l'utilizzo del join?
    RiKkArDo on IRCnet

  9. #9

  10. #10
    Originariamente inviato da Avalox

    e poi, per fare una query, non serve l'identificativo della connessione al database? Come fai se usi database differenti?
    io mi collego a MySql con

    $link = mysql_connect();

    poi siccome lavoro su db differenti non eseguo mysql_select_db ma vado subto a scrivere la query:

    $query = "SELECT * FROM $database.$tabella as N,
    $database_B.$tabella_B as P
    WHERE N.campo1 = P.campo2;"

    e la eseguo:

    $query_result = mysql_query ($query, $link);

    perchè per eseguire la query serve il link a MySQL che è indipendente dal database selezionato.

    Cosa intendi con count(tab1.*)?
    RiKkArDo on IRCnet

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.