Home > Server > SQL Joincast su

SQL Joincast su

TABLE JOINS

CROSS JOIN semplice
e la base per tutte le join. E’ il prodotto cartesiano di tutte le righe delle tabelle coinvolte nella join.
Attenzione alla forma base che può generare una tabella con un numero di righe spropositato
rows = rows-1-tabella x rows-2-tabella

SELECT * 
      FROM annoucements AS a 
      CROSS JOIN users AS u

visualizzate solo le righe con legame nella tabella di destra
(AS per definire l’alias )

 SELECT c.itemid, lastname, firstname, c.email,  c."Country"
       FROM contactsdownloads AS cd 
       CROSS JOIN contacts AS c
       WHERE itemidcontacts = c.itemid;

aggiunta alla query un ulteriore condizione.

 SELECT c.itemid, lastname, firstname, c.email,  c."Country"
       FROM contactsdownloads AS cd CROSS JOIN contacts AS c
       WHERE itemidcontacts = c.itemid  AND c.itemid = 13890

INNER JION unisce due tabelle mostrando le righe che soddisfano un certa regola
e la join di default.

SELECT c.itemid, lastname, firstname, c.email,  c."Country"
       FROM contactsdownloads  
       INNER JOIN contacts AS c
           ON (itemidcontacts) = c.itemid
       WHERE LOWER(lastname) LIKE '%martin%';

NATURAL and USING clauses

USING

SELECT itemid, lastname, firstname, c.email,  c."Country"
        FROM contactsdownloads  INNER JOIN contacts AS c (itemidcontacts)
         USING (itemidcontacts)
         WHERE LOWER(lastname) LIKE '%martin%';

NATURAL

SELECT itemid, lastname, firstname, c.email,  c."Country"
        FROM contactsdownloads  INNER JOIN contacts AS c (itemidcontacts)
         USING (itemidcontacts)
         WHERE LOWER(lastname) LIKE '%martin%';

HAVING

SELECT  count(c.itemid) AS "Num." ,  c."Country" AS codec
       FROM contactsdownloads  INNER JOIN contacts AS c
           ON (itemidcontacts) = c.itemid   

        GROUP BY codec
        HAVING  count (c.itemid) > 10

OUTER JOIN

Se JOIN ritorna records se c’è almeno un collegamento tra le due tabelle coinvolte le OUTER JOIN (LEFT, RIGHT, FULL) non richiedono sempre l’esistenza di un collegamento tra le due tabelle. Nella pratica l’OUTER può anche essere omesso. Il termini LEFT e RIGHT si riferiscono alla posizione delle tabelle rispetto alla keyword JOIN. Il JOIN può conivolgere più campi delle tabelle.

LEFT JOIN ritorna tutte le righe della tabella di sinistra ( rispetto alla keyword JOIN) anche se mancano corrispondenze nella tabella di destra

select C.countryname,C.countrycode, CS."IDcountrysubsidiary", CS.countrynumber,
CS.ordersubsidiary
FROM country AS C
LEFT JOIN countrysubsidiary CS
ON C.countrycode = CS.countrycode 

l’esempio di LEFT JOIN precedente con due campi coinvolti nel collegamento        

select C.countryname, C.countrycode, C.portalid, CS."IDcountrysubsidiary", CS.countrynumber,
CS.ordersubsidiary
FROM country AS C
LEFT JOIN countrysubsidiary CS
ON C.countrycode = CS.countrycode 
AND C.portalid = CS.portalid

l’esempio di LEFT Join con cast su un campo specifico

select C.countryname,C.countrycode , CS."IDcountrysubsidiary", CS.countrynumber,
CS.ordersubsidiary
FROM country AS C
LEFT JOIN countrysubsidiary CS
ON cast( C.countrycode as varchar(10))  = CS.countrycode

RIGHT JOIN ritorna tutte le righe della tabella di DESTRA anche se mancano corrispondenze nella tabella di sinistra

select C.countryname,C.countrycode, CS."IDcountrysubsidiary", CS.countrynumber,
CS.ordersubsidiary
FROM country AS C
RIGHT JOIN countrysubsidiary CS
ON C.countrycode = CS.countrycode 

FULL JOIN ritorna TUTTE le righe delle tabelle evidenziando le corrispondenze

select C.countryname,C.countrycode, CS."IDcountrysubsidiary", CS.countrynumber,
CS.ordersubsidiary
FROM country AS C
FULL JOIN countrysubsidiary CS
ON C.countrycode = CS.countrycode 

Doppio JOIN: LEFT OUTER JOIN e FULL JOIN

select co.countryname, co.countrycode, cs."IDcountrysubsidiary", cs.countrynumber, cs.ide_contact,
cs.ordersubsidiary
 , S.organization 
FROM country AS co
LEFT JOIN countrysubsidiary cs
 ON  cs.countrycode = co.countrycode
FULL JOIN e_contacts AS S
 ON  CS.ide_contact = S.ide_contact

ORDER BY  countryname

Risorse:

SQL  – PostgreSQL

Postgresql 

Plpgsql 

DB

Creare eliminare database e tabelle

Annunci
  1. Non c'è ancora nessun commento.
  1. No trackbacks yet.

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo: