Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
SQL inner join query challenge
Message
 
 
To
10/11/2009 10:57:16
General information
Forum:
Visual FoxPro
Category:
Databases,Tables, Views, Indexing and SQL syntax
Environment versions
Database:
Visual FoxPro
Miscellaneous
Thread ID:
01434050
Message ID:
01434056
Views:
51
>Ok this should be easy but is a bit of a tough for me this morning...
>
>I have three main tables with the important fields listed in ():
>
>Model - list of models (modelid, name)
>Option - list of options (optionid, name, ispackage)
>modeloption - list of options on a given model (optionid, modelid, packageid, billcode)
>
>In modeloption the packageid self-joins to denote the contents of the package. So if a given modeloption record had an optionid of 102, then I could query modeloption where packageid=102 get the contents of the package.
>
>The result I want is this...
>
>Model, Package Name (option.name for top level), Option Name (option.name for the children), Billcode
>
>So the package name would be duplicated for each record in the contents. It is ok if there is a record in which the package name and option name are both listed.
>
>What is making it tough for me a bit is the join against the modeloption is on modelid AND optionid. That I think is tripping up my join syntax.
>
>Any help is appreciated.

What seems to be the problem?
Select M1.Name as ModelName, O.Name as OptionName, IIF(O.IsPackage, O.Name, space(30)) as PackageName
  from Models M1 inner join ModelOptions MO on M1.ModelID = MO.ModelID inner join Option O on MO.OptionID = O.OptionID where O.IsPackage = .F.
union all
Select M1.Name as ModelName, O.Name as OptionName, IIF(O.IsPackage, O.Name, space(30)) as PackageName
  from Models M1 inner join ModelOptions MO on M1.ModelID = MO.ModelID inner join Option O on MO.PackageID = O.OptionID
where O.IsPackage = .T.
If it's not broken, fix it until it is.


My Blog
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform