Visualizzazione dei risultati da 1 a 10 su 10

Discussione: [ASP] Due query in una

  1. #1

    [ASP] Due query in una

    Salve ragazzi avrei la necessità di fare una query che pesca 4 campi però con diverse specifiche.
    Per farvi capire, nella stessa query, ho bisogno che mi prenda le prime 4 aziende random di cui 2 devono avere il pacchetto 'unlimited' e 2 il pacchetto diverso da unlimited' (dove pacchetto è un campo che diversifica i vari pacchetti)

    qui di seguito le due query che vorrei far diventare una sola

    **** QUESTA PRENDE 2 con UNLIMITED*********
    SELECT TOP 2 a.idazienda, a.pacchetto, a.nprv AS PREVENTIVI, z.email AS EMAIL_LEAD, a.nominativo, z.citta, z.idazienda, s.idazienda, s.titolo, s.stato FROM tbl_aziende a
    INNER JOIN tbl_zone z ON a.idazienda=z.idazienda
    INNER JOIN tbl_settori s ON a.idazienda=s.idazienda
    WHERE z.citta='Venezia' AND s.titolo='FOTOVOLTAICO' AND a.pacchetto='unlimited'
    AND z.attiva='SI' AND z.abilitata='SI' AND s.stato='True' ORDER BY NEWID()


    **** QUESTA PRENDE 2 diverse da UNLIMITED*********
    SELECT TOP 2 a.idazienda, a.pacchetto, a.nprv AS PREVENTIVI, z.email AS EMAIL_LEAD, a.nominativo, z.citta, z.idazienda, s.idazienda, s.titolo, s.stato FROM tbl_aziende a
    INNER JOIN tbl_zone z ON a.idazienda=z.idazienda
    INNER JOIN tbl_settori s ON a.idazienda=s.idazienda
    WHERE z.citta='Venezia' AND s.titolo='FOTOVOLTAICO' AND a.pacchetto<>'unlimited'
    AND z.attiva='SI' AND z.abilitata='SI' AND s.stato='True' ORDER BY NEWID()



    Invece di fare que query vorrei che queste due fossero un unica sola query.
    E' possibile?
    http://www.generationweb.it <--- web site

  2. #2
    Potresti usare union oppure modificare "Where"
    codice:
    Where (clausole_prima_query) or (clausole_seconda_query)

  3. #3
    eh ma cosi, mettendo OR prende o l'1 o l'altra a me serve che le prende tutte e due
    http://www.generationweb.it <--- web site

  4. #4
    Quote Originariamente inviata da generationweb.i Visualizza il messaggio
    eh ma cosi, mettendo OR prende o l'1 o l'altra a me serve che le prende tutte e due
    No, mettendo or prende i record che soddisfano entrambe le condizioni...

  5. #5
    Con la UNION mi funziona però non mi funziona l'ORDER BY random

    SELECT TOP 2 a.idazienda, a.pacchetto, a.nprv AS PREVENTIVI, z.email AS EMAIL_LEAD, a.nominativo, z.citta, z.idazienda, s.idazienda, s.titolo, s.stato FROM tbl_aziende a
    INNER JOIN tbl_zone z ON a.idazienda=z.idazienda
    INNER JOIN tbl_settori s ON a.idazienda=s.idazienda
    WHERE z.citta='Venezia' AND s.titolo='FOTOVOLTAICO' AND a.pacchetto='unlimited'
    AND z.attiva='SI' AND z.abilitata='SI' AND s.stato='True'
    UNION
    SELECT TOP 2 a.idazienda, a.pacchetto, a.nprv AS PREVENTIVI, z.email AS EMAIL_LEAD, a.nominativo, z.citta, z.idazienda, s.idazienda, s.titolo, s.stato FROM tbl_aziende a
    INNER JOIN tbl_zone z ON a.idazienda=z.idazienda
    INNER JOIN tbl_settori s ON a.idazienda=s.idazienda
    WHERE z.citta='Venezia' AND s.titolo='FOTOVOLTAICO' AND a.pacchetto<>'unlimited'
    AND z.attiva='SI' AND z.abilitata='SI' AND s.stato='True'
    ORDER BY NEWID()
    http://www.generationweb.it <--- web site

  6. #6
    Ripeto:
    Quote Originariamente inviata da generationweb.i Visualizza il messaggio
    eh ma cosi, mettendo OR prende o l'1 o l'altra a me serve che le prende tutte e due
    Usando "OR" selezioni i record che soddisfano le prime condizioni e anche i record che soddisfano le seconde condizioni...

  7. #7
    eh ma cosi me ne prende solo 2 mettendo 'TOP 2' se invece metto 'TOP 4' capita che mi prende anche 3 unlimited e 1 new...devono essere sempre 2 e 2
    http://www.generationweb.it <--- web site

  8. #8
    Quote Originariamente inviata da generationweb.i Visualizza il messaggio
    eh ma cosi me ne prende solo 2 mettendo 'TOP 2' se invece metto 'TOP 4' capita che mi prende anche 3 unlimited e 1 new...devono essere sempre 2 e 2
    Certo, se usi TOP 2, non puoi accodare le clausole Where.... ...Pare non ti resti che UNION.
    Riguardo l'order by, puoi lasciare le due query intatte (quindi con due order by) e semplicemente "accodarle" con union.

  9. #9
    Ho fatto cosi

    SELECT TOP 4 a.idazienda, a.pacchetto, a.nprv AS PREVENTIVI, z.email AS EMAIL_LEAD, a.nominativo, z.citta, z.idazienda, s.idazienda, s.titolo, s.stato FROM tbl_aziende a INNER JOIN tbl_zone z ON a.idazienda=z.idazienda
    INNER JOIN tbl_settori s ON a.idazienda=s.idazienda
    WHERE z.citta='Napoli' AND s.titolo='FOTOVOLTAICO' AND a.pacchetto = 'unlimited' AND z.attiva='SI' AND z.abilitata='SI' AND s.stato='True'
    ORDER BY NEWID()
    http://www.generationweb.it <--- web site

  10. #10
    così prendi solo i pacchetti 'unlimited' - se devi prendere i primi due 'unlimited' e i primi due NON 'unlimited' puoi solo usare la UNION

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.