簡體   English   中英

Codeigniter中的查詢問題

[英]Query issue in Codeigniter

我想在首頁上隨機顯示6條新聞/評論,但隨機顯示6次相同的內容,但是我不會重復任何內容。 這是SQL查詢:

SELECT
    anmeldelser.billed_sti ,
    anmeldelser.overskrift ,
    anmeldelser.indhold ,
    anmeldelser.id ,
    anmeldelser.godkendt
FROM
    anmeldelser
LIMIT 0,6
UNION ALL
SELECT
    nyheder.id ,
    nyheder.billed_sti ,
    nyheder.overskrift ,
    nyheder.indhold ,
    nyheder.godkendt
FROM nyheder
ORDER BY rand() LIMIT 0,6

我假設你需要加入兩個表這個你的評論。 您沒有提到您的外鍵,所以我也假設是。

還不清楚表的列名稱是否相同。 因此,我要為您的表發布一個聯接查詢,並在其中假定您的外鍵和列名,因此請在使用前更正該查詢。
這是您要聯接表的查詢:

$query = $this->db
    ->select('an.billed_sti,an.overskrift,an.indhold,an.id,an.godkendt, ny.id as ny_id,ny.billed_sti as ny_billed_sti, ny.overskrift as ny_overskrift, ny.indhold as ny_indhold  , ny.godkendt as ny_godkendt ')
    ->from('anmeldelser as an')
    ->join('nyheder as ny', 'ny.id_fk = an.id', 'left outer') // I am assuming here that the [id_fk] field is the foreign key 
    ->limit(0, 6)
    ->order_by('puttablename.tablecolumn', 'asc') // Your you table name and column name by which you want to order, you can use [asc/desc] as your need 
    ->get();

如果您想要UNION, 這里就是解決方案。

//initialize query builder
$sql1=$sql2=$this->db;
$sql1->select('anmeldelser.billed_sti ,anmeldelser.overskrift ,anmeldelser.indhold ,anmeldelser.id ,anmeldelser.godkendt');
$sql1->from('anmeldelser');
$sql1->order_by('rand()');
$sql1->limit(3);
//get only sql string
$query1=$sql1->get_compiled_select();

$sql2->select('nyheder.id ,nyheder.billed_sti ,nyheder.overskrift ,nyheder.indhold ,nyheder.godkendt');
$sql2->from('nyheder');
$sql2->order_by('rand()');
$sql2->limit(3);
$query2=$sql2->get_compiled_select();
//combine two query
$query = $this->mydb->query("($query1) UNION ($query2)");
$result = $query->result();

為了簡化起見,顯示了帶有活動記錄的示例,請嘗試將偏移量隨機化而不是順序,同時仍限制為6

// get the total number of rows
$total_rows = $this->db->count_all_results('my_table');
// offset random point within the total rows
$offset = rand( 0 , $total_rows - 6 );
$q = $this->db->offset( $offset )->limit( 6 )->get( 'my_table' );
print_r( $q->result_array() );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM