I have an application that connects to multiple server. where one server will have ID that are foreign key to a table that is located on a different server. The issue here is that MySQL does not support linked servers so I can't run a left query that will LEFT join 2 tables located on separate servers.
So I have to pull 2 separate queries from 2 different server using PHP and they LEFT JOINing them using PHP.
Please note that the array keys listed below needs to be dynamic. I can't use a fixed names are different queries will have different column name. The example below use the phone_call_id as they key to use to join both arrays and it combines the column name. if $right_array has more columns then these columns need to be added to the final array.
so I have 2 array
$left_array =
Array
(
[0] => Array
(
[id] => 1
[start_on] => 2014-09-14 19:50:00
[end_on] => 2014-09-14 19:51:00
[subject] => This is a new event
[client_id] =>
[all_day_event] => 0
[event_type] => Event
[phone_call_id] => 122
)
[1] => Array
(
[id] => 2
[start_on] => 2014-09-15 05:53:00
[end_on] => 2014-09-15 06:53:00
[subject] => This is a new event
[client_id] =>
[all_day_event] => 0
[event_type] => Event
[phone_call_id] => 123
)
[2] => Array
(
[id] => 3
[start_on] => 2014-09-15 05:53:00
[end_on] => 2014-09-15 06:53:00
[subject] => This is a new event
[client_id] =>
[all_day_event] => 0
[event_type] => Event
[phone_call_id] =>
)
)
The right array will look like this
$right_array =
Array
(
[0] => Array
(
[account_id] => 1
[phone_call_id] => 122
)
[1] => Array
(
[account_id] => 2
[phone_call_id] => 123
)
)
the results needs to be like this array
$joined_array =
Array
(
[0] => Array
(
[id] => 1
[start_on] => 2014-09-14 19:50:00
[end_on] => 2014-09-14 19:51:00
[subject] => This is a new event
[client_id] =>
[all_day_event] => 0
[event_type] => Event
[phone_call_id] => 122
[account_id] => 1
)
[1] => Array
(
[id] => 2
[start_on] => 2014-09-15 05:53:00
[end_on] => 2014-09-15 06:53:00
[subject] => This is a new event
[client_id] =>
[all_day_event] => 0
[event_type] => Event
[phone_call_id] => 123
[account_id] => 2
)
[2] => Array
(
[id] => 3
[start_on] => 2014-09-15 05:53:00
[end_on] => 2014-09-15 06:53:00
[subject] => This is a new event
[client_id] =>
[all_day_event] => 0
[event_type] => Event
[phone_call_id] =>
[account_id] =>
)
)
This function simulates the left join operation
//the function can be used like so assuming the column name in the left array is the same name as the right array
//the function can be used like so assuming the column name in the left array "are different but has the same corresponding value"
Try to avoid this kind of operations. If you can, try to put all databases to same server and use SQL JOIN-s. PHP is not MYSQL. PHP is not dedicated for (left, right, etc) join tables. e.g. if you have huge numbers of records in left table returned by mysql and placed as result in array you can face big troubles with memory issue. Do MYSQL jobs using MYSQL, do PHP jobs using PHP. This way you will save: time, performances and neurons. :)
Try this (assuming that your empty 'phone_call_id' and 'accout_id' values are null):
a simple solution,
worked for me use this,
Thanks all
hi You can try this piece of code this will give you a merged array similar to left outer join:
you will get fields from right array with prefix 'right_'