Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Sql Select with multiple joins
Message
 
 
To
05/03/2017 13:03:34
General information
Forum:
Visual FoxPro
Category:
Databases,Tables, Views, Indexing and SQL syntax
Miscellaneous
Thread ID:
01648784
Message ID:
01648788
Views:
31
Here is the SQL Select that I found works. I am not 100% sure it is the correct one but it has no NULL and returns the query. Here is this SQL select:
select equipment.equip_id, equipment.equip_desc, trandetail.* from trandetail  
 left join orders on orders.order_no = trandetail.order_no and trandetail.order_no > 0 and LEN(ordersequip_id) > 0
 join equipment on (trandetail.equip_pk > 0 and equipment.equip_pk = trandetail.equip_pk) or 
 (trandetail.order_no > 0 and equipment.equip_id = orders.equip_id) 
The key is that I have JOIN EQUIPMENT only once and have it with an OR. If you see anything I am doing wrong, please let me know.
Thank you.



>I would at first not try for a single select, but to get the result set right and then (perhaps) try to streamline the SQL.
>Did not try to think your text through too much, but the main problem seems to be uncertain join criteria.
>So I'd first identify both sets needing different join criteria, do each join and then union them.
>
>Still hazy if the order needs to be checked if trandetail already has a direct join...
>
>
>>I need to create a SQL Select that would return the following query:
>>
>>EQUIPMENT.EQUIP_ID, EQUIPMENT.EQUIP_DESC, TRANDETAIL.* FROM TRANDETAIL --- JOINS
>>
>>Structure of tables (simplified):
>>
>>TRANDETAIL      EQUIP_PK
>>                            ORDER_NO
>>
>>ORDERS            ORDER_NO
>>                           EQUIP_ID
>>
>>EQUIPMENT     EQUIP_ID   Char(15)  - Unique field
>>                          EQUIP_PK
>>                          EQUIP_DESC Char(40) - Equipment descriptoin
>>
>>
>>The challenge is that the SQL Select should select All Records from TRANDETAIL and records
>>from EQUIPMENT either by the field TRANDETAIL.EQUIP_PK Jointed with EQUIPMENT.EQUIP_PK
>>or by Joining ORDERS on ORDER_NO and then Joining EQUIPMENT on EQUIPMENT.EQUIP_ID with ORDERS_EQUIP_ID.
>>Therefore, it looks like I will have the table EQUIPMENT twice and this creates many NULL values.
>>
>>Is my explanation too confusing? Any suggestions?
"The creative process is nothing but a series of crises." Isaac Bashevis Singer
"My experience is that as soon as people are old enough to know better, they don't know anything at all." Oscar Wilde
"If a nation values anything more than freedom, it will lose its freedom; and the irony of it is that if it is comfort or money that it values more, it will lose that too." W.Somerset Maugham
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform