Extracting records from 3 tables using joins in MySQL
Hi All,
Pls help me urgently...
I have a n Order Processing Module and I have 4 tables for this.
When a new order is placed these 2 tables are populated.
Order_Customer : records details abt the direct customer/dealer who places the order.
Order_Product : records the details abt the product (qty, unit price, taxes etc).
At the Supplier's end the newly placed orders are accepted or rejected and notification is passed on to the despatch dept.
No when Acceptance authority logs in all the new orders should be viewed..all the previously accepted orders should not be displayed. Here OrderId, OrderDate, Cust/Deal Name (from Order_Customer) and Product, Qty, OrdValue (from Order_Product) are to be displayed. My normal join qry does not work here
"SELECT * FROM Order_Customer,Order_Product where Order_Customer.OSerialNo NOT IN (SELECT OrdCustSrNo FROM Order_Acceptance) AND Order_Product.OrdCustSrNo NOT IN (SELECT OrdCustSrNo FROM Order_Acceptance) AND Order_Customer.OSerialNo=Order_Product.OrdCustSrNo"
This gives an error "Unable to load driver.java.sql.SQLException: Syntax error or access violation: You have an error in your SQL syntax near 'SELECT OrdCustSrNo FROM Order_Acceptance) AND Order_Product.OrdCustSrNo NOT IN (' at line 1 "
Also tried
"SELECT Order_Customer.* FROM Order_Customer LEFT JOIN Order_Acceptance ON Order_Customer.OSerialNo = Order_Acceptance.OrdCustSrNo where Order_Acceptance.OrdCustSrNo IS NULL";
Here it gives error Column Name Product not found.
Similar is the case when moving an Accepted Order to Despatch Dept.
Need help urgently.
"SELECT Order_Customer.* FROM Order_Customer LEFT JOIN Order_Acceptance ON Order_Customer.OSerialNo = Order_Acceptance.OrdCustSrNo where Order_Acceptance.OrdCustSrNo IS NULL";
I think the above query has syntax error. for try with this
"SELECT * FROM Order_Customer LEFT JOIN Order_Acceptance ON Order_Customer.OSerialNo = Order_Acceptance.OrdCustSrNo and Order_Acceptance.OrdCustSrNo IS NULL";
Similar Messages
-
Extracting Records from multiple tables
hi
I have to extract almost 1 lack records from 3 tables.
Please help me in ABAP CODE.
PLease it is very urgent.Which tables are they ? Refer to link below for more hints abt performance.
Re: select query - optimization -
How to read records from Relationship table using ABAP API's
Hi All,
I need to retrieve the records from Relationship table. In Java API's I came to know there is an option to retrieve this. I could not find anything in ABAP API's. Is there any option in ABAP API's to do this.
Please Suggest.
Thank You,
Gajendra.Hi Gajendra,
You can mainly read records from MDM (in a DDIC structure) using ABAP API's using the following function modules/methods:
1. RETRIEVE: This is used to generically retrieve records from tables. Attributes and Values can also be retrieved.
2. RETRIEVE SIMPLE: Retrieve records from MDM in a simple way.( simple data types).
3. RETRIEVE CHECKOUT: Retrieves all checked out ID's.
4. RETRIEVE ATTRIBUTES: Retrieves attribute(s) from a Taxanomy table.
You will find all these methods in the following interface
Interface : IF_MDM_CORE_SERVICES
Hope it helps.
*Please reward points if found useful.
Thanks and Regards
Nitin Jain -
Extracting data from multiple tables using DB connect
Hi,
I am having different tables which are having the same structure in oracle database but there names are different.Now i have only one datasource at BI side.This datasource shld extract data from the tables dynamically.How can i do it using DB Connect .
Thnxsahh I see - problem as you said then is if you then take on a new location!
I would then put into the source system a table identifier and create a view across all the tables
Then dbconnect from the view and use the selection parameter of table parameter if you wanted one infopackage per "location"
If you do need to have a new table in the source then just expand the view and create a new ipak
hence NO bw changes required that need a dev-q-p transport - just the ipak in prod and it;s the source systems problem to add the extra table to the view -
How to fetch corresponding records from 2 tables using ADF Toplink & EJB
Hi,
I am unable to fetch records from 2 tables, which has a foregin key.Used the custom query in toplink, But the output is the cartition of the first table draged and the first row of the second table.The output required should be in the form of ADF Table. I am able to find the output in JSF data table.
Two tables:
Table name:Solutions
sol_id varchar2(PK)
sol_name varchar2
Table name:Solution_details
sol_id varchar2(FK)
common_asum_id varchar2(PK)
common_detail varchar2
Output Required:
sol_id,sol_name,common_asum_id,common_detail
Custom query:
SELECT * FROM solutions a
,solution_details b
WHERE a.sol_id=b.sol_idHi,
I am unable to fetch records from 2 tables, which has a foregin key.Used the custom query in toplink, But the output is the cartition of the first table draged and the first row of the second table.The output required should be in the form of ADF Table. I am able to find the output in JSF data table.
Two tables:
Table name:Solutions
sol_id varchar2(PK)
sol_name varchar2
Table name:Solution_details
sol_id varchar2(FK)
common_asum_id varchar2(PK)
common_detail varchar2
Output Required:
sol_id,sol_name,common_asum_id,common_detail
Custom query:
SELECT * FROM solutions a
,solution_details b
WHERE a.sol_id=b.sol_id -
Slecting records from MSAccess tables using multiple conditions
Hi,
I am trying to build s select list of team names for a
sporting club website. The select list should include teams if the
currently logged in user is a coach, team manager, assistant coach,
player or a parent of a player.
When I have only one group of conditions in the where clause
it works fine. But that only accounts for one of the above roles.
As soon as I ad an OR and another set of criteria my CF7 server's
swsoc.exe goes into an permanent loop (well, at least 10 minutes, I
reboot after that :-)
For example, this works fine ...
<!--- select teams I coach, assistant coach, manage, am a
parent of a player, or am a player --->
<cfquery name="teams"
Datasource="#Application.Datasource#">
SELECT distinct teams.uid_team, team_name, uid_coach,
uid_team_manager, uid_coordinator, team_asst
from teams, player_agegroups, players
where
(player_agegroups.uid_team=teams.uid_team and
players.uid_user=player_agegroups.uid_user
and teams.uid_season=#session.season# and
players.uid_invoice_to=#session.userid#)
Order by team_name
</cfquery>
But as soon as I add another condition cf7 goes into a
loop...
<!--- select teams I coach, assistant coach, manage, am a
parent of a player, or am a player --->
<cfquery name="teams"
Datasource="#Application.Datasource#">
SELECT distinct teams.uid_team, team_name, uid_coach,
uid_team_manager, uid_coordinator, team_asst
from teams, player_agegroups, players
where
(player_agegroups.uid_team=teams.uid_team and
players.uid_user=player_agegroups.uid_user
and teams.uid_season=#session.season# and
players.uid_invoice_to=#session.userid#) or
(player_agegroups.uid_team=teams.uid_team and
players.uid_user=player_agegroups.uid_user
and teams.uid_season=#session.season# and
players.uid_user=#session.userid#) or
(player_agegroups.uid_team=teams.uid_team and
players.uid_user=player_agegroups.uid_user
and teams.uid_season=#session.season# and
teams_uid_coach=#session.userid#) or
(player_agegroups.uid_team=teams.uid_team and
players.uid_user=player_agegroups.uid_user
and teams.uid_season=#session.season# and
teams.team_asst=#session.userid#) or
(player_agegroups.uid_team=teams.uid_team and
players.uid_user=player_agegroups.uid_user
and teams.uid_season=#session.season# and
teams.uid_team_manager=#session.userid#)
Order by team_name
</cfquery>
Any combination hangs CF7, whether it be two, three or all
conditions, and any combination of conditions..
The teams table stores team name, coach, team manager,
assistant coach and coordinator. Players table stores the player
records, and the parent (uid_invoice_to), is part of the player
record. player agegroups has the teams, with a record for each
player in a team. The whole system is based around seasons, hence
the #session.season# variable.
What should happen is I get a very short list of teams. When
I select a team from the select list I then go and grab all the
player records from the player_agegroups table joined to the users
table to get their names, date of birth etc...
Can anyone see what I am doing wrong?
thanks
TanyaRustywater wrote:
>
> For example, this works fine ...
>
> <!--- select teams I coach, assistant coach, manage,
am a parent of a player,
> or am a player --->
> <cfquery name="teams"
Datasource="#Application.Datasource#">
> SELECT distinct teams.uid_team, team_name, uid_coach,
uid_team_manager,
> uid_coordinator, team_asst
> from teams, player_agegroups, players
> where
> (player_agegroups.uid_team=teams.uid_team and
> players.uid_user=player_agegroups.uid_user
> and teams.uid_season=#session.season# and
> players.uid_invoice_to=#session.userid#)
> Order by team_name
> </cfquery>
>
> But as soon as I add another condition cf7 goes into a
loop...
>
> <!--- select teams I coach, assistant coach, manage,
am a parent of a player,
> or am a player --->
> <cfquery name="teams"
Datasource="#Application.Datasource#">
> SELECT distinct teams.uid_team, team_name, uid_coach,
uid_team_manager,
> uid_coordinator, team_asst
> from teams, player_agegroups, players
> where
> (player_agegroups.uid_team=teams.uid_team and
> players.uid_user=player_agegroups.uid_user
> and teams.uid_season=#session.season# and
> players.uid_invoice_to=#session.userid#) or
> (player_agegroups.uid_team=teams.uid_team and
> players.uid_user=player_agegroups.uid_user
> and teams.uid_season=#session.season# and
players.uid_user=#session.userid#) or
> (player_agegroups.uid_team=teams.uid_team and
> players.uid_user=player_agegroups.uid_user
> and teams.uid_season=#session.season# and
teams_uid_coach=#session.userid#) or
> (player_agegroups.uid_team=teams.uid_team and
> players.uid_user=player_agegroups.uid_user
> and teams.uid_season=#session.season# and
teams.team_asst=#session.userid#) or
> (player_agegroups.uid_team=teams.uid_team and
> players.uid_user=player_agegroups.uid_user
> and teams.uid_season=#session.season# and
> teams.uid_team_manager=#session.userid#)
> Order by team_name
> </cfquery>
You are not just OR'ing your data filter, you are also OR'ing
the
relations between tables. You should define the relations
between your
tables in explicit JOIN statements in your FROM, and filter
the data in
your WHERE. You should also remove duplice filters in your
WHERE
statement. That would look something like:
SELECT DISTINCT
teams.uid_team,
team_name,
uid_coach,
uid_team_manager,
uid_coordinator,
team_asst
FROM
(teams INNER JOIN
player_agegroups ON
player_agegroups.uid_team=teams.uid_team)
INNER JOIN players ON
players.uid_user=player_agegroups.uid_user
WHERE
teams.uid_season=#session.season#
AND
players.uid_invoice_to=#session.userid#
OR
players.uid_user=#session.userid#
OR
teams_uid_coach=#session.userid#
OR
teams.team_asst=#session.userid#
OR
teams.uid_team_manager=#session.userid#
ORDER BY
team_name
Jochem
Jochem van Dieten
Adobe Community Expert for ColdFusion -
I have two tables - table1 and table2 - that have the exact same schema. There are three fields that can be used to compare the data of the two tables, field1, field2, and field3. When there are matching rows in the two tables (table1.field1/2/3 = table2.field1/2/3)
I want to replace table1.field4 with table2.field4 and replace table1.field5 with table2.field5.
I have worked with the query but have come up with goobly goop. I would appreciate any help. Thanks.If your field1, field2, and field3 combinations in these tables are unique, you
can do a join on them.
Select t1.field4, t2.field4 , t1.field5, t2.field5
from table1 t1 inner join table2 t2 on t1.field1 =t2.field1 and t1.field2=t2.field2 AND t1.field3=t2.field3
--You can update your table1 with following code:
Merge table1 t1
using table2 t2 on
on t1.field1 =t2.field1 and t1.field2=t2.field2 AND t3.field3=t2.field3
When matched then
Update Set
t1.field4= t2.field4
,t1.field5 = t2.field5 ; -
Delete records from internal table using another internal table
HI,
I have two internal tables itab1 and itab2 which have same records initially.Later some records of itab2 are deleted .Then i want to delete those records from itab1 also ie,those records not found in itab2 .Is there any method other than looping.
So that itab1 again becomes equal to itab2.
Thanks in advance.
Sowmya.Soumya,
Itab1 , Itab2 .
Before deleting the records from itab2 move those records to one more internal table itab3.
Now you have deleted records of itab2 in itab3.
SORT ITAB3,ITAB1 by your main key field.
LOOP AT itab3.
READ TABLE ITAB1 WITH KEY key field = itab3-
keyfield.
IF sy-subrc EQ 0.
DELETE itab1 where keyfield eq itab3-keyfield.
ENDIF.
ENDLOOP. -
Reading Locked records from HR table using LDB PNP
Hi,
I am trying to read the table pa0168 using LDB PNP.
But the problem is that get pernr staement does not retrieve locked records i.e where PA0168-sprps eq "X'.
Can anybody help me with this.
I have to use LDB so i don't want a solution of writing a select * for the pa0168 table.
hence i have to use get pernr statement but it should also retrieve locked records.
how can i achieve that.? please help
Thanks
GT
Message was edited by: GTHi GT,
In the START-OF-SELECTION event, set the parameter value
pnp-sw-ignorelockedrecords = 'N'.
Good Luck,
Suresh Datti
( Pl award points if the answer helps you ) -
How do I retrieve records from a table using JCO RFC Function Call
Hi
I am totally new to SAP Java Progamming. And I would like to know if I am writing code correctly. I read some tutorials in the Internet but I am still not sure if I am doing it the correct way.
This is what my vendor has given me.
My question is whether this is the correct optimum way to do get the customer detail based on an array of input values for the customer reference number.
Input:
I_CUSTNO - Any number customer IDs. This is a table similar to I_CUSTDETL
Output:
Structure name: I_CUSTDETL
Note: The CUSTID column has been added in the structure to identify the address of the relevant customer id
Field details:
Field Name Data Type Length
CUSTID Character 10
COMPANYNAME Character 40
EMAIL Character 40
This is my code:
JCoFunction function = connect.getFunction("Z_GET_CUSTOMER");
JCoTable cust = function.getTableParameterList().getTable("I_CUSTNO");
cust.appendRow();
cust.setValue("CUSTID", "10000700");
cust.appendRow();
cust.setValue("CUSTID", "10000701");
cust.appendRow();
cust.setValue("CUSTID", "10000702");
connect.execute(function);
JCoTable table = function.getTableParameterList().getTable("I_CUSTDETL");
System.out.println("Table size: " + table.getNumRows());
for (int i = 0; i < table.getNumRows(); i++, table.nextRow()) {
String custid= table.getValue("CUSTID").toString();
String companyname = table.getValue("COMPANYNAME").toString();
String email = table.getValue("EMAIL").toString();
System.out.println("----
System.out.println("Record Number::" + i + "::");
System.out.println("----
System.out.println("Value custidis::" + custid+ "::");
System.out.println("Value companyname is::" + companyname + "::");
System.out.println("Value email is::" + email + "::");Hi,
Answer to your question :whether this is the correct optimum way to do get the customer detail based on an array of input values for the customer reference number? is
YES.
Regards,
Ganga -
Stored pl/sql procedure retrieving similar records from different tables using
Hi all I'm trying to retrieve the employee num and employee name if they are both a driver and mechanic
I'm script my own procedure and it compiles with no issue but when i try to execute it. they will show me this error.
Error starting at line 29 in command:
EXECUTE VERIFY(1,'John Smith')
Error report:
ORA-01422: exact fetch returns more than requested number of rows
ORA-06512: at "CARSON.VERIFY", line 8
ORA-06512: at line 1
01422. 00000 - "exact fetch returns more than requested number of rows"
*Cause: The number specified in exact fetch is less than the rows returned.
*Action: Rewrite the query or change number of rows requested
This is how my procedure look like:
CREATE OR REPLACE PROCEDURE VERIFY(
enum IN NUMBER,
ename IN VARCHAR) IS
empnum NUMBER;
empname VARCHAR(50);
Fail EXCEPTION;
BEGIN
select employee.e#, employee.name
into empnum, empname
from employee join driver
on driver.e# = employee.e#
join mechanic
on driver.e# = enum;
EXCEPTION
WHEN Fail THEN
dbms_output.put_line('OK');
END VERIFY;
and this is how i execute the procedure
EXECUTE VERIFY(1,'John Smith');
so may i know what have gone wrong? would be glad if someone is able to enlighten me.No need for a loop.
Just make sure that your query always returns at most one row. Adding a predicate like 'where rownum=1' is a way to achieve that:
select employee.e#
, employee.name
into empnum
, empname
from employee join driver on driver.e# = employee.e#
join mechanic on driver.e# = enum
where rownum = 1; -
FETCHING VALUES IN MULTI RECORD BLOCK FROM ANOTHER TABLE USING SELECT STATEMENT.
Hi,
I have one multi record block in which i want to fetch values
(more then one record) from another table using select statement
IN KEY NEXT ITEM.I am getting following error.
ORA-01422: exact fetch returns more than requested number of rows
Thanks in advance.In your case I see no reason to use non-database block and to try to populate it from a trigger with a query, instead of using the default forms functionality where you can associate the block and the fields with table, create where clause using bind variables and simply use execute_query() build-in to populate the block. The power of the forms is to use their build-in functionality to interact with the database.
Also, you can base your block on a query, not on a table and you dynamically change this query using set_block_property() build-in. You can use any dynamic queries (based on different data sources) and you simply need to control the column's data type, the number of the columns and their aliases. Something like creating inline views as a block data source.
However, you can replace the explicit cursor with implicit one like
go_block('non_db_block_name');
first_record();
FOR v_tab IN (SELECT *
FROM tab
WHERE col_name = :variable)
LOOP
:non_db_block_name.field1 := v_tab.col1;
:non_db_block_name.field2 := v_tab.col2;
next_record();
END LOOP; -
JDBC-XI-FILE scenario. How to extract data from multiple tables
Hi,
At this moment I didn't have the access for XI system. So here I have some silly question. Could you please clarify the same ??
If I got to extract data from single table using JDBC adapter I can put the below query in communication channel
SELECT *FROM orders WHERE new='true'.
But if I got to extract data from multiple tables, logic to be used should be like as shown below. ( from previous thread------prabhu).
SELECT <Table_2>.EID, <Table_2>.FName, <Table_2>.LName, <Table_1>.REC_DAT, <Table_1>.DESCRP
FROM <Table_1> INNER JOIN <Table_2> on
<Table_1>.CARDNO = <Table_2>.CARD
where REC_DAT = <condition>
union
SELECT <Table_2>.EID, <Table_2>.FName, <Table_2>.LName, <Table_1>.REC_DAT, <Table_1>.DESCRP
FROM <Table_1> INNER JOIN <Table_2> on
<Table_1>.CARDNO = <Table_2>.CARD
where REC_DAT = <condition>
But my query is ........how to put the above entire code in one line. (i.e in Qery place of communication channel ) ??
Thanks
KumarHi Palnati,
You either use a select query with join or a stored procedure which will contain the logic to extract the data from multiple tables. But, the limitation in case of stored procedure is u can hv only one selct query in it.
You write ur actual query provided in the parameter 'Query SQL Statement". u can also wrt a stored procedure in it. Also, u can provide a update statement in it which will update a certain flag so tht u don selct the data again.
Check the following link
<a href="http://help.sap.com/saphelp_nw04/helpdata/en/14/80243b4a66ae0ce10000000a11402f/frameset.htm">http://help.sap.com/saphelp_nw04/helpdata/en/14/80243b4a66ae0ce10000000a11402f/frameset.htm</a>
Regards,
Akshay
Message was edited by:
Akshay Salunke -
Problem trying to extract records from VBFA on Smartform.
Hello
I'm attempting to extract records from the table VBFA and my inexperience with Smartforms is start to show.
I only want to have 1 record per handling unit. I'm extracting using VBELV, VBELN and VBTYP_N via SELECT * FROM VBFA.
However this gives me multiple records per handling unit. There is no further field available on the record to make it unique. This is were my inexperience comes in. How do I perform the read of VBFA without using SELECT.?
Regards
Mike.Hello Brad,
You're right, I'm trying to get am internal table to use a loop node.
I'd like to go for the full SELECT into a table then read it and either a skip or ignore a record that is a duplication. I'm not sure of the way to achieve this though. This is the first time I've had to manipulate the data like this. Until now I've had the keys to select the data for me.
I've currently got:
SELECT * FROM VBFA INTO TABLE LT_VBFA
WHERE VBELV = IS_DLV_DELNOTE-HD_GEN-DELIV_NUMB
AND VBTYP_N = 'X'.
Then I have LT_VBFA INTO WA_VBFA in a LOOP node .
There needs to be some thing between the 2 nodes to prune the unwanted duplicates.
Regards
Mike. -
Delete records from multiple table
Hi,
I need to delete records from multiple tables using a single delete statement. Is it possible ? If so please let me know the procedure.
Kindly Help.
Thanks,
Alexander.Hi Tim,
Syntax of DELETE statement does not allow for multiple tables to be specified in this way. Infact, none of the DMLs allow you to specify table names like this.
Technically, there are other ways of deleting from multiple tables with one statement.
1. "Use a trigger":
What was probably meant by this is that you have a driving-table on which you create a on-delete trigger. In this trigger, you write the logic for deleting from other tables that you want to delete from.
This does mean a one-time effort of writing the trigger. But the actual DML operation of deleting from all the tables would be simply triggered by a delete on driving-table.
2. Dynamic SQL:
Write a PL/SQL code to open a cursor with table-names from which you want the data to be deleted from. In the cursor-for loop, write a dynamic SQL using the table-name to delete from that table.
3. Using Foreign-Key constraint with Cascade-Delete:
This I feel is a more 'cleaner' way of doing this.
Having to delete data from multiple tables means that there is some kind of parent-child relationship between your tables. These relationships can be implemented in database using foreign-key constraints. While creating foreign-key constraint give the 'on delete cascade' clause to ensure that whenever data is deleted from parent-table, its dependent data is deleted from child-table.
Using foreign-key constraint you can create a heirarchy of parent-child relationships and still your DELETE would be simple as you would only have to delete from parent-table.
IMPORTANT: Implementing foreign-key constraints would also impact other DML operations that you should keep in mind.
Maybe you are looking for
-
Cost component split datasource
Hi, We recently activated 0CO_PC_ACT_10 Cost Component Split datasource and bringing info into 0COPC_C07 cube for the costing analysis. Acccording to the requirement need to extact the cost of finished material and cost of semi finished material into
-
Can G4 PowerMac MDD take advantage of SATA II hard drive speed?
A PowerMac G4 MDD has 33Mhz PCI slots and a 167Mhz bus -- correct? Can this architecture take full advantage of a PCI SATA II controller card (if it exists for a Mac) and a connected SATA II hard drive w. 16mb cache operating at 3Gb/s? Or even a 1.5G
-
Intercompany billing document setup
Hi, I would like to enquire on intercompany billing document setup. We have customized billing type ZIV for intercompany invoice, and ZIG for intercompany credit memo. Is is possible to set up the cancellation for each billing type
-
Printing Multiple Sheets in a Spreadsheet
Hi - How do I print multiple sheets in a Numbers spreadsheet? Suppose I have Sheet 1, Sheet 2, Sheet 3, and Sheet 4, and only want to print Sheet 1, Sheet 2, and Sheet 4. I do not want to print the whole spreadsheet. Thank you.
-
Please can anyone help! Ive suddenly lost my entire iPhoto library while I wss cleaning up-sometimes I can find them, they're there but all in grey and so is the menu for iPhoto-so I can't open or do anything-