Domanda
Sto mantenendo del codice che utilizza un operatore *= in una query su un database Sybase e non riesco a trovare la documentazione al riguardo.Qualcuno sa cosa fa *=?Presumo che si tratti di una sorta di unione.
select * from a, b where a.id *= b.id
Non riesco a capire come questo sia diverso da:
select * from a, b where a.id = b.id
Soluzione
Tavoli interni ed esterni
I termini tabella esterna e tabella interna descrivono il posizionamento delle tabelle in un join esterno:
In un left join, la tabella esterna e la tabella interna sono rispettivamente le tabelle sinistra e destra.La tabella esterna e la tabella interna vengono anche denominate rispettivamente tabelle di conservazione delle righe e tabelle di fornitura null.
In un join destro, la tabella esterna e la tabella interna sono rispettivamente le tabelle destra e sinistra.
Ad esempio, nelle query seguenti, T1 è la tabella esterna e T2 è la tabella interna:
- T1 a sinistra si unisce a T2
- T2 a destra unisciti a T1
Oppure, utilizzando la sintassi Transact-SQL:
- T1 *= T2
- T2 =* T1
Altri suggerimenti
Significa unione esterna, un semplice = significa unione interna.
*= is LEFT JOIN and =* is RIGHT JOIN.
(o viceversa, continuo a dimenticarlo visto che non lo uso più, e Google non è d'aiuto quando cerco *=)
Ovviamente tu Dovrebbe scrivilo in questo modo:
SELECT *
FROM a
LEFT JOIN b ON b.id=a.id
La sintassi a,b è malvagia.
Sintassi ANSI-82
select
*
from
a
, b
where
a.id *= b.id
ANSI-92
select
*
from
a
left outer join b
on a.id = b.id
select * from a, b where a.id = b.id
Richiede che esista una riga in cui b.id = a.id per restituire una risposta
select * from a, b where a.id *= b.id
Riempirà le colonne da b con valori nulli quando non c'era una riga in b dove b.id = a.id.