When you create a view with a UNION in it, R:Base sets the datatypes for
the columns in the views based on the first SELECT.

The parentheses around the shorter column that you want to line up with the
40-character column turn that column into an R:BASE "Expression", and
R:BASE figures out what datatype to turn it into, in this case the datatype
of the matching column from the earlier SELECT.

I think we went over this in a DMB  & Assoc training class about 18 years
ago, Karen. You already have it in your notes somewhere! :-)




On Wed, May 29, 2013 at 6:56 PM, Karen Tellef <[email protected]> wrote:

> I bow down to you...   Now can you please explain why that works?
> I assume the important parts are:
> 1.    Create a temporary column alias
> 2.    You put the select with the bigger (?) text width first
> 3.    And for the other select enclose the column in parenthesis
>
> I need to put this in my notes for future reference but I'd love to know
> why this works...
>
> Again, thanks!
>
> Karen
>
>
>
>  -----Original Message-----
> From: Bill Downall <[email protected]>
> To: RBASE-L Mailing List <[email protected]>
> Sent: Wed, May 29, 2013 5:47 pm
> Subject: [RBASE-L] - Re: Creating a view
>
>  Karen,
>
>  Put the BillingAddress part of the query first, and in the second part
> of the query, put Address in parentheses.
>
>  CREATE VIEW vCompany (CompanyID, tmpAddress) +
> AS SELECT companyid, BillingAddress FROM company WHERE type = 'B' +
> UNION ALL SELECT +
> companyid, (address) FROM company WHERE type = 'A'
>
>
>
> On Wed, May 29, 2013 at 6:12 PM, Karen Tellef <[email protected]> wrote:
>
>> This is driving me crazy...  Trying to create a view, here's the pared
>> down example:
>>
>> CREATE VIEW vCompany (CompanyID, Address) +
>> AS SELECT companyid, address FROM company WHERE type = 'A' +
>> UNION ALL SELECT +
>> companyid, billingaddress FROM company WHERE type = 'B'
>>
>> I get a "column type mismatch in union".  The problem is that the Address
>> and the
>> BillingAddress are different lengths.  Address is Text 25 and
>> BillingAddress is Text 40.
>> It refuses to put the 2 together.
>>
>> I've tried these, and still get the mismatch:
>> 1.    Leaving out the alias column names and letting the view definition
>> decide.
>> 2.    Creating a new column alias name like:
>>
>> CREATE VIEW vCompany (CompanyID, tmpAddress) +
>> AS SELECT companyid, address FROM company WHERE type = 'A' +
>> UNION ALL SELECT +
>> companyid, billingaddress FROM company WHERE type = 'B'
>>
>> All of it gives me a union type mismatch.  I cannot have different
>> lengths of
>> TEXT columns?
>>
>> Anyone think of a workaround?  I'm going to be using this in a report,
>> and I suppose
>> I could add code to create a temp table on the fly, but I really wanted a
>> view...
>>
>> Karen
>>
>>
>>
>
>

Reply via email to