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

    Una query un pò complicata

    Ciao a tutti
    sto cercando di eseguire una query, ma ho bisogno di qualche dritta!

    ho due tabelle una principale e un'altra che è collegata alla prima , tramite un id

    vorrei tirare fuori tutti i record che hanno almeno un campo nella seconda tabella
    (e fin qui so come si fa)

    ma vorrei anche includere tutti i record della prima tabella che abbiano un campo (numerico) superiore a un dato numero
    posso includere in un unica query tutti e due i valori? come posso scrivere?

    Ciao e grazie in anticipo

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Non vedo particolari problemi.
    La prima parte della query è una INNER JOIN sul campo in comune.
    La seconda parte è una WHERE su un campo della prima tabella.

    Roby

  3. #3
    non credo che un where vadia bene

    così faccio la prima join
    SELECT COUNT(utenti.usr) FROM mail INNER JOIN utenti ON mail.user = utenti.usr

    se a questa associo un where
    SELECT COUNT(utenti.usr) FROM mail INNER JOIN utenti ON mail.user = utenti.usr where eta > 30

    invece di aggiungere sottraggo

    invece io vorrei tutti quelli che si trovano comuni nelle due tabelle + tutti quelli con eta superiore a 30

  4. #4
    Puoi usare UNION per unire il risultato di più query distinte che abbiano come output gli stessi campi, mi spiego meglio:

    SELECT COUNT(utenti.usr) AS N_UTENTI FROM mail INNER JOIN utenti ON mail.user = utenti.usr
    UNION SELECT COUNT(user) AS N_UTENTI FROM mail WHERE eta > 30

    Così facendo ottieni un RecordSet con due Record, il primo con il conteggio della prima query ed il secondo con il conteggio della seconda query.

    Adesso puoi decidere di fare due cose, la prima è ciclare tutti i record e sommare ti i valori oppure complicate un pochino la query ed ottenere un unico record con la somma di tutti i conteggi.....

    Dovrebbe essere più o meno così:

    SELECT SUM(N_UTENTI) AS TOT_UTENTI
    FROM (SELECT COUNT(utenti.usr) AS N_UTENTI FROM mail INNER JOIN utenti ON mail.user = utenti.usr
    UNION SELECT COUNT(user) AS N_UTENTI FROM mail WHERE eta > 30) AS M_UTENTI

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.