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

    [MySQL] Unire due query con condizione if

    ciao a tutti!
    mi trovo ad avere la query seguente:

    codice:
    SELECT contatti_prospect.id_contatto AS id_contatto, concat(consulenti.nome, ' ', consulenti.cognome) AS Consulente, STR_TO_DATE(data, '%d/%m/%Y') AS Data, ragione_sociale AS Prospect, concat(tlmk.nome, ' ', tlmk.cognome) AS Tlmk, data_inserimento AS 'Data Tlmk', descrizione AS Esito 
    FROM consulenti, contatti_prospect, prospect, tlmk, esiti_prospect 
    WHERE consulenti.id_consulente = contatti_prospect.id_consulente AND prospect.id_prospect = contatti_prospect.id_prospect AND tlmk.id_tlmk = contatti_prospect.id_tlmk AND esiti_prospect.id_esito = contatti_prospect.id_esito
    per ogni id_contatto POTREBBE corrispondere una serie di record in un'altra tabella. la mia necessità è che SOLO per le righe dove esiti_prospect.descrizione è uguale a "Chiuso" mi vada a leggere i campi nell'altra tabella con la query seguente:

    codice:
    SELECT concat(giorno, '/', mese, '/', anno) AS 'Data Chiusura', mobile_voce AS 'Mobile Voce', mobile_dati AS 'Mobile Dati', fissa_voce AS 'Fissa Voce', fissa_dati AS 'Fissa Dati', Fatturato, Website
    FROM chiusure
    WHERE id_contatto = '" + row[0].ToString() + "'"
    dove row[0] è l'id_contatto avente esito Chiuso della query prima identificato scorrendo riga per riga la tabella ottenuta dalla prima query.

    mi servirebbe unire le due query in modo da ottenere lo stesso risultato senza dover salvare la prima in una tabella da scorrere poi riga x riga (super lento!). ovviamente se banalmente includo la seconda query della prima mettendo poi il join nel where mi tira fuori SOLO le righe che hanno una entry nelle chiusure, mentre a me serve appunto che mi tiri fuori SIA quelle che hanno la entry dentro chiusure, SIA quelle che non l'hanno..

    se po' fa?

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    136
    Se mandi un descrizione del database e una migliore descrizione della query posso aiutarti meglio.Saluti.

  3. #3
    cavolo non avevo visto che c'era una risposta al 3ead

    visto che è un po noiosa come query e ci sono miriadi di tabelle, ho semplificato cosi:
    in allegato le due tabelle

    la tabella 1 contiene una serie di elementi distinti da un id e con un campo chiusura.
    la tabella 2 invece contiene le chiusure relative agli id della tabella 1. tuttavia ad ogni tabella1.id non corrisponde un tabella2.id, quindi se voglio avere una tabella3 che unisca le due tabelle di cui sopra (ovvero che mi dia sulla stessa riga id, chiusura, esitochiusura e che se un tabella1.id non ha riferimento nella tabella2, mi lasci blank i campi) non so come fare..

    riuscite ad aiutarmi?

    grazie!!!
    Immagini allegate Immagini allegate

  4. #4
    io proverei a trasformare la join implicita in esplicita, cioè

    SELECT * FROM CLIENTI, FATTURE WHERE CLIENTI.IDCliente=FATTURE.IDCliente

    diventa

    SELECT * FROM CLIENTI JOIN FATTURE ON CLIENTI.IDCliente=FATTURE.IDCliente

    quindi quella che tu adesso metteresti come WHERE agguntiva, finirebbe nella JOIN

    SELECT * FROM CLIENTI JOIN FATTURE ON CLIENTI.IDCliente=FATTURE.IDCliente AND CLIENTI.Estero=1

    adattala

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.