2008-09-02 20 views
9

Je suis maintenant un code qui utilise un * = opérateur dans une requête à une base de données Sybase et je ne peux pas trouver de la documentation sur elle. Est-ce que quelqu'un sait ce que * = fait? Je suppose que c'est une sorte de jointure.* = dans Sybase SQL

select * from a, b where a.id *= b.id

Je ne peux pas comprendre comment cela est différent de:

select * from a, b where a.id = b.id
+0

S'il vous plaît garder les soins. Il est déprécié de nos jours et nécessite une activation explicite sur la configuration de la base de données. – frlan

Répondre

12

De http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.dc34982_1500/html/mig_gde/mig_gde160.htm:

intérieur et tables extérieures

les termes de table externe et table interne décrivent le placement des tables dans une jointure externe:

  • Dans une jointure gauche, la table externe et table interne sont les tables gauche et à droite. La table externe et la table interne sont également appelées tables de préservation de ligne et de fourniture de null, respectivement.

  • Dans un droit de jointure, la table externe et table interne sont le droit et les tables gauche respectivement.

Par exemple, dans les demandes ci-dessous, T1 est la table externe et T2 est la table interne:

  • T1 jointure gauche T2
  • T2 droit jointure T1

Ou, en utilisant la syntaxe Transact-SQL:

  • T1 * = T2
  • T2 = T1 *
+1

wow, merci sybase pour rendre ce son compliqué et confus. –

+0

Il semble lien que vous avez dit dit à propos de différentes choses. – Trismegistos

9

Cela signifie jointure externe, un simple = signifie jointure interne.

*= is LEFT JOIN and =* is RIGHT JOIN. 

(ou vice-versa, je continue à oublier que je ne suis pas l'utiliser plus, et Google n'est pas utile lors de la recherche * =)

+0

cette réponse est juste. –

6

Bien sûr, vous devrait écrire de cette façon:

SELECT * 
FROM a 
LEFT JOIN b ON b.id=a.id 

L'une, la syntaxe b est le mal.

+0

Je ne sais pas à propos du mal, mais il est certainement propriétaire de Sybase et Microsoft SQL Server, et non pris en charge par d'autres marques de base de données. –

0
select * from a, b where a.id = b.id

exige qu'une ligne existe dans où b.id = a.id afin de retourner une réponse

select * from a, b where a.id *= b.id

remplira les colonnes de b avec quand il n'y avait nulls pas une ligne b où b.id = a.id.

5

ANSI-82 syntaxe

select 
    * 
from 
    a 
    , b 

where 
    a.id *= b.id 

ANSI-92

select 
    * 
from 
    a 
    left outer join b 
     on a.id = b.id 
+0

Je pense que vous voulez dire SQL-89 et SQL-92, pas ANSI-82 et ANSI-92. –