SQL Abfrage aus 2 Tabellen mit Sotierung und vill Union?

StuDumbo

Neuer Benutzer
Beiträge
3
Datenbank: MySQLi 5.5.5

Moinsen, ich habe folgendes Problem: Ich möchte eine Overview anzeige Basteln / Anpassen.
In der Overview sollen die letzten Beiträge und der letzte Autor angezeigt werden.
Dabei sollen alle Doppelten Beiträge Raus gefiltert werden nicht das z.B. 5 mal der gleiche Beitrag angezeigt wird. Das habe ich auch insoweit hinbekommen. Jetzt liegt es nur noch daran das er den letzten Autor nicht anzeigt im mom Zeigt er immer nur den Ersteller des Beitrags an.

Mein Momentaner Code Aufbau / Lösungs-ansatz:
PHP:
// Newest posts
function overview_newest_posts($overview_unviewwhere)
{
    global $mybb, $settings, $db, $templates, $theme, $lang, $trow;

    $trow = alt_trow();

    $table_heading = $lang->overview_newest_posts;
    $column1_heading = $lang->overview_subject;
    $column2_heading = $lang->overview_author;

    // Fetch data
    $query = $db->query("SELECT subject, username, uid, pid, tid, icon
                         FROM ".TABLE_PREFIX."posts
                         WHERE visible='1' {$overview_unviewwhere}
                         GROUP BY tid DESC,uid
                         HAVING COUNT(*)>1
                         LIMIT 0,{$settings['overview_max']};");

    // Print data
    while($posts = $db->fetch_array($query))
    {
        $val1 = overview_parsesubject($posts['subject'], $posts['icon'], 0, $posts['tid'], $posts['pid'], 0, 1);
        $val2 = overview_parseuser($posts['uid'], $posts['username']);
        eval("\$table_content .= \"".$templates->get("overview_2_columns_row")."\";");
    }

    eval("\$output = \"".$templates->get("overview_2_columns")."\";");

    return $output;
}

Ich bin der Meinung ich benötige nun eine weitere Abfrage aus der 2ten Tabelle um da z.B. den Autor zu filtern oder die dateline um den Letzten Autor angezeigt zu bekommen. Erschwerend kommt hinzu das in der Tabelle 2 gleiche Abfragen wie in Tabelle 1 sind also Doppelte somit kommt es zu Konflikten und ich bin da einfach Überfordert. Ich hoffe mir kann jemand weiter Helfen.

Gruß Florian
 
Werbung:
Es geht um die Tabelle posts und da wollte ich ich die Letzten Beiträge auslesen und nur den Letzten Autor von einem Beitrag. Die Doppelten Beiträge sollen gefiltert / zusammen gefasst werden das nicht 5 mal das gleiche drinnen seht. Wie gesagt soweit klappt es nur es soll der Letzte Autor angezeigt werden das wäre hier StuDumbo2 es wir aber immer nur der Beitragsersteller angezeigt StuDumbo1. Hoffe es ist verständlich.^^

Code:
INSERT INTO `_posts` (`pid`, `tid`, `replyto`, `fid`, `subject`, `icon`, `uid`, `username`, `dateline`, `message`, `ipaddress`, `includesig`, `smilieoff`, `edituid`, `edittime`, `editreason`, `visible`, `pthx`) VALUES (NULL, '504', '518', '7', 'RE: Willkommen iwurafus', '0', '13', 'StuDumbo2', '1481675155', '12345test', 0xd9f133ac, '0', '0', '0', '0', '', '1', '0')

Und hier wäre unter umständen die 2te Tabelle wo man den lastposten Auslesen könnte wenn es muss wie gesagt im mom habe ich da nen leichten Knoten im Hirn und komme nicht weiter.

Code:
INSERT INTO `_forums` (`fid`, `name`, `description`, `linkto`, `type`, `pid`, `parentlist`, `disporder`, `active`, `open`, `threads`, `posts`, `lastpost`, `lastposter`, `lastposteruid`, `lastposttid`, `lastpostsubject`, `allowhtml`, `allowmycode`, `allowsmilies`, `allowimgcode`, `allowvideocode`, `allowpicons`, `allowtratings`, `usepostcounts`, `usethreadcounts`, `requireprefix`, `password`, `showinjump`, `style`, `overridestyle`, `rulestype`, `rulestitle`, `rules`, `unapprovedthreads`, `unapprovedposts`, `deletedthreads`, `deletedposts`, `defaultdatecut`, `defaultsortby`, `defaultsortorder`, `xthreads_grouping`, `xthreads_firstpostattop`, `xthreads_inlinesearch`, `xthreads_tplprefix`, `xthreads_langprefix`, `xthreads_allow_blankmsg`, `xthreads_nostatcount`, `xthreads_fdcolspan_offset`, `xthreads_settingoverrides`, `xthreads_postsperpage`, `xthreads_hideforum`, `xthreads_hidebreadcrumb`, `xthreads_defaultfilter`, `xthreads_wol_announcements`, `xthreads_wol_forumdisplay`, `xthreads_wol_newthread`, `xthreads_wol_attachment`, `xthreads_wol_newreply`, `xthreads_wol_showthread`) VALUES (NULL, 'Herzlich Willkommen', 'Begrüssungsthread', '', 'f', '6', '6,7', '1', '1', '1', '4', '7', '1481919093', 'Helferlein', '2', '507', 'Willkommen yvisyfex', '0', '1', '1', '1', '1', '1', '1', '1', '1', '0', '', '1', '0', '0', '0', '', '', '0', '0', '0', '0', '0', '', '', '0', '0', '0', '', '', '0', '0', '0', '', '0', '0', '0', '', '', '', '', '', '', '')
 
Also, mal ganz einfach gesagt. Du hast eine Tabelle Topics und eine Tabelle postings wie folgt:

Code:
test=# create table topics(id serial primary key, topic text);
CREATE TABLE
test=*# create table postings(id serial primary key, topic int references topics, posting text);
CREATE TABLE

Du willst jetzt je Topic die z.B. 3 aktuellsten Postings haben: (ich unterstelle, die Postings sind nach der id geordnet)

Code:
select t.*, p.* from topics t left join lateral (select * from postings p where topic=t.id order by p.id desc limit 3) p on true;
 
Werbung:
Zurück
Oben