Проблема запроса в Codeigniter - PullRequest
0 голосов
/ 04 января 2011

Я хочу случайным образом показать 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

Ответы [ 3 ]

0 голосов
/ 02 августа 2017

Я предполагаю, что вам нужно присоединиться к таблице Two с помощью этого вашего комментария. Вы не упомянули свой внешний ключ, поэтому я предполагаю, что также.

Также не ясно, совпадают ли имена столбцов ваших таблиц или нет. Итак, я публикую запрос на соединение для вашей таблицы, в котором я предполагаю ваш внешний ключ и имя столбца, поэтому, пожалуйста, исправьте это перед использованием. Вот ваш запрос, чтобы присоединиться к вашей таблице:

$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();

И если вы хотите, чтобы СОЮЗ здесь является решением для него.

0 голосов
/ 02 августа 2017
//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();
0 голосов
/ 04 января 2011

показывает мой пример с активной записью для простоты, попробуйте рандомизировать ваше смещение вместо порядка, все еще ограничиваясь 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() );
...