I don't understand how this query works:
1 SELECT
2 EXTRACTVALUE(definition_xml.COLUMN_VALUE, 'SubtypeFieldInfo/DomainName') AS domain_name
3 FROM
4 SDE.GDB_ITEMS_VW i
5 JOIN SDE.GDB_ITEMTYPES it ON
6 i.Type = it.UUID
7 ,TABLE(XMLSEQUENCE(XMLType(Definition).Extract('/DETableInfo/Subtypes/Subtype/FieldInfos/SubtypeFieldInfo'))) definition_xml
What does the comma at the start of line #7 do?
My guess is that whoever wrote the query used some sort of SQL short-hand. Perhaps if someone could help re-format the query in 'beginner SQL' it might help.
Best Answer
The comma is the implicit join operator, ANSI SQL-89 syntax. No different than the comma in:
I think you can replace it with
CROSS JOIN
*, assuming a recent enough Oracle version.The
i
,it
anddefinition_xml
are the aliases of the 3 joined tables (the 2 tables are base tables or views and the 3rd is something like a derived table, Oracle calls them "table collection expressions") but they are no different regarding how they can be joined or referenced.The parentheses around the joins and the last table are completely optional. I added them just to show how the query is parsed:
*
CROSS JOIN
and the comma join operator have different precedence but this doesn't matter for the specific query. As a good practice though, it's best not to mix the comma join with explicitJOIN
.