2011-10-16 3 views
0

Как я могу написать это:Как я могу сделать UNION ALL, запрос, в Kohana Framework

SELECT 
'Name' AS Type, 
id AS Restaurant_ID, 
NULL AS Item_ID, 
Name, 
Address, 
NULL AS M_Id 
FROM restaurants 
WHERE Name LIKE '%forår%' 
UNION ALL 
SELECT 
'Address' AS Type, 
id AS Restaurant_ID, 
NULL AS Item_ID, 
Name, 
Address, 
NULL AS M_Id 
FROM restaurants 
WHERE Address LIKE '%forår%' 
UNION ALL 
SELECT 
'Item' AS Type, 
NULL AS Restaurant_ID, 
id AS Item_ID, 
Name, 
NULL AS Address, 
M_Id 
FROM menu_items 
WHERE name LIKE '%forår%' 

в Kohana Query Builder?

Я нашел это:

How do I build a UNION query with ORDER BY and GROUP BY in Kohana's query builder?

И сделал также 3 запросов:

 $query1 = 
     DB::select(
     array('name', 'Type'), 
     array('id', 'Restaurant_ID'), 
     array('NULL', 'Item_ID'), 'Name', 'Address', array('NULL', 'M_Id')) 
     ->from('restaurants') 
     ->where('Name', 'LIKE', '%forår%'); 

     $query2 = 
     DB::select(
     array('Address', 'Type'), 
     array('NULL', 'Item_ID'), 
     Name, 
     Address, 
     array('NULL', 'M_Id')) 
     ->from('restaurants') 
     ->where('Address', 'LIKE', '%forår%'); 

     $query3 = 
     DB::select(
     array('Item', 'Type'), 
     array('NULL', 'Restaurant_ID'), 
     array('id', 'Item_ID'), 
     Name, 
     array('NULL', 'Address'), 
     M_Id) 
     ->from('menu_items') 
     ->where('name', 'LIKE', '%forår%'); 

Но теперь я не знаю, как и где я должен применить союз()

+0

Почему в построителе запросов? –

ответ

3

I не проверили ваш код, но попробуйте это:

$query1 = 
     DB::select(
      array('name', 'Type'), 
      array('id', 'Restaurant_ID'), 
      array('NULL', 'Item_ID'), 
      'Name', 
      'Address', 
      array('NULL', 'M_Id') 
     ) 
     ->from('restaurants') 
     ->where('Name', 'LIKE', '%forår%'); 

$query2 = 
     DB::select(
      array('Address', 'Type'), 
      array('NULL', 'Item_ID'), 
      Name, 
      Address, 
      array('NULL', 'M_Id') 
     ) 
     ->union($query1) 
     ->from('restaurants') 
     ->where('Address', 'LIKE', '%forår%'); 

$query3 = 
     DB::select(
      array('Item', 'Type'), 
      array('NULL', 'Restaurant_ID'), 
      array('id', 'Item_ID'), 
      Name, 
      array('NULL', 'Address'), 
      M_Id 
     ) 
     ->union($query2) 
     ->from('menu_items') 
     ->where('name', 'LIKE', '%forår%') 
     ->execute(); 
1
<?php 

$query = DB::query(Database::SELECT, "SELECT 
'Name' AS Type, 
id AS Restaurant_ID, 
NULL AS Item_ID, 
Name, 
Address, 
NULL AS M_Id 
FROM restaurants 
WHERE Name LIKE '%:search%' 
UNION ALL 
SELECT 
'Address' AS Type, 
id AS Restaurant_ID, 
NULL AS Item_ID, 
Name, 
Address, 
NULL AS M_Id 
FROM restaurants 
WHERE Address LIKE '%:search%' 
UNION ALL 
SELECT 
'Item' AS Type, 
NULL AS Restaurant_ID, 
id AS Item_ID, 
Name, 
NULL AS Address, 
M_Id 
FROM menu_items 
WHERE name LIKE '%:search%'"); 

$query->param(':search', $_GET['search']); 

$query->execute(); 
Смежные вопросы