I remember this discussion, mostly...   I remembered the alias, and I 
remembered to put the one select first.  What I forgot is putting the other one 
in parenthesis!!    And I have your big SQL class folder right here....

Karen

 

 

 

-----Original Message-----
From: Bill Downall <[email protected]>
To: RBASE-L Mailing List <[email protected]>
Sent: Wed, May 29, 2013 6:20 pm
Subject: [RBASE-L] - Re: Creating a view


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