2016-07-20 6 views
-2

i wie eine Tabelle enter image description hereBenachrichtigung von einzelner Tabelle erhalten und mit mehreren Tabellen verknüpfen und das Ergebnis als einzelnes Array

und wählen Sie alle Mitteilungen aus dieser Tabelle und kommen Sie mit unten genannten Tabellen

  1. tbl_notice enter image description here

  2. tbl_task

enter image description here

  1. tbl_assignment

enter image description here

und ich versuche, Daten aus Tabellen wie

$sql = "select * from(
    (
    SELECT a.refer_id as id ,a.refer_tbl,b.task_name as name FROM tbl_notification as a 
    LEFT JOIN tbl_task as b ON (a.refer_id= b.task_id)ORDER BY a.created_date desc 
    ) UNION 
    (
    SELECT c.refer_id as id ,c.refer_tbl, d.notice_title as name FROM tbl_notification as c 
    LEFT JOIN tbl_notice as d ON (c.refer_id = d.notice_id)ORDER BY c.created_date desc 
    ) UNION 
    ( 
    SELECT e.refer_id as id,e.refer_tbl, f.title as name FROM tbl_notification as e 
    LEFT JOIN tbl_assignment as f ON (e.refer_id = f.assignment_id) ORDER BY e.created_date desc 
    ))"; 
    $query= $this->db->query($sql)->get(); 

das Ergebnis zeigt, das zu holen Daten aus der ersten Tabelle, wo Join (in Fall tbl_task) andere Tbl_notice und Tbl_assignment Details sind NULL Ergebnis Demo wie diese enter image description here

Bitte helfen Sie mir, dies zu korrigieren .....

+0

Bitte schreiben Sie keine Screenshots der Daten. Sende die Daten – e4c5

Antwort

1

Sie eine LEFT (OUTER) Durchführung JOIN, wenn es klingt wie Sie sind eine einfache alte (INNER) JOIN benötigen. Versuchen Sie folgendes:

SELECT a.refer_id as id ,a.refer_tbl,b.task_name as name FROM tbl_notification as a 
JOIN tbl_task as b ON (a.refer_id= b.task_id)ORDER BY a.created_date desc 
UNION 
SELECT c.refer_id as id ,c.refer_tbl, d.notice_title as name FROM tbl_notification as c 
JOIN tbl_notice as d ON (c.refer_id = d.notice_id)ORDER BY c.created_date desc 
UNION 
SELECT e.refer_id as id,e.refer_tbl, f.title as name FROM tbl_notification as e 
JOIN tbl_assignment as f ON (e.refer_id = f.assignment_id) ORDER BY e.created_date desc 
+0

Danke ...... für deine Hilfe –

0

bekam ich die Antwort mit folgenden Code anhängen

select * from (SELECT a.refer_id as id ,a.refer_tbl,a.created_date,b.task_name as name FROM tbl_notification as a JOIN tbl_task as b ON (a.refer_id= b.task_id AND a.refer_tbl="tbl_task") 
      UNION SELECT c.refer_id as id ,c.refer_tbl,c.created_date, d.notice_title as name FROM tbl_notification as c JOIN tbl_notice as d ON (c.refer_id = d.notice_id AND c.refer_tbl="tbl_notice") 
      UNION SELECT e.refer_id as id,e.refer_tbl,e.created_date, f.title as name FROM tbl_notification as e JOIN tbl_assignment as f ON (e.refer_id = f.assignment_id AND e.refer_tbl="tbl_assignment")) tbl_notification ORDER BY `tbl_notification`.`created_date` desc 

Thaks mir geholfen .....

Verwandte Themen