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

    [SQL] Inner Join per ricerca di Clienti con ordini/senza ordini

    Buongiorno,
    Dovrei fare una ricerca tra i clienti, e restituire entrambi questi risultati:
    1-Nome e Cognome di quelli con ordini
    2-Nome e Cognome senza ordini
    In un unica Query.
    Separatamente non ho problemi a trovare il risultato.
    Pensavo di usare "IN"
    jabjoint

  2. #2
    quelli con ordine + quelli senza ordini fanno l'intero archivio, per cui: SELECT NOME, COGNOME FROM CUSTOMERS

  3. #3
    Quote Originariamente inviata da optime Visualizza il messaggio
    quelli con ordine + quelli senza ordini fanno l'intero archivio, per cui: SELECT NOME, COGNOME FROM CUSTOMERS
    Devo separarli
    jabjoint

  4. #4
    posta quanto hai fatto finora (e perché hai pensato a "IN"?)

  5. #5
    select from ... where ... order by condizione_con_ordine

    "condizione_con_ordine" potrebbe essere un campo di tipo boolean che puoi costruire nella select stessa in base a delle condizioni having, case ecc
    codice:
    SELECT
    			`tc`.*,
    			CASE 1
    				WHEN
    					`tc`.`Ragione_Sociale` != ''
    				THEN
    					`tc`.`Ragione_Sociale`
    				ELSE
    					CONCAT(`tc`.`Cognome`, ' ', `tc`.`Nome`)
    				END
    			AS `Ragione_Sociale`,
    ecc ecc
    Questo è come gestisco io il caso in cui non ci sia ragione sociale, per esempio: prendo cognome e concateno con nome. Tu potresti verificare l'esistenza di un record nella tabella ordini o, se ti torna più comodo, puoi settare un flag nella tabella delle anagrafiche che vale 1 quando crei o aggiorni un ordine, 0 di default.

    Vedi tu cosa ti torna meglio

  6. #6
    Ciao, ho risolto con una sub-query: Una select richiamata in una select, in tal modo riesco a selezionare entrambi contemporaneamente.
    Non ho sottomano la query, la posterò.
    jabjoint

  7. #7

  8. #8
    Non ho tempo optime, appena riesco posto.
    jabjoint

  9. #9
    Moderatore di Windows e software L'avatar di URANIO
    Registrato dal
    Dec 1999
    residenza
    Casalpusterlengo (LO)
    Messaggi
    1,290
    Quote Originariamente inviata da jabjoint Visualizza il messaggio
    Ciao, ho risolto con una sub-query: Una select richiamata in una select, in tal modo riesco a selezionare entrambi contemporaneamente.
    Non ho sottomano la query, la posterò.
    Più facilmente facevi una union

  10. #10
    Quote Originariamente inviata da URANIO Visualizza il messaggio
    Più facilmente facevi una union
    Ho fatto così:

    codice:
    SELECT C.PK_CodiceCliente AS 'Tutti i Clienti', 
           O.FK_CodiceCliente AS 'Clienti Con Ordini', 
           S.PK_CodiceCliente As 'Clienti Senza Ordini'
    
    
    
    
    FROM
    
    
    Clienti AS C FULL OUTER JOIN Ordine AS O ON O.FK_CodiceCliente = C.PK_CodiceCliente,
    
    
    (SELECT C.PK_CodiceCliente FROM Clienti AS C
    FULL OUTER JOIN Ordine AS O2 ON O2.FK_CodiceCliente = C.PK_CodiceCliente WHERE O2.FK_CodiceCliente IS NULL) AS S
    
    
    
    
    GROUP BY C.PK_CodiceCliente, O.FK_CodiceCliente, S.PK_CodiceCliente
    ORDER BY C.PK_CodiceCliente

    jabjoint

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.