Hallo, lieber Forumbenutzer. Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen Möglichkeiten der Kommunikation ist das Forum ein wenig eingeschlafen und weniger Nutzer benutzen das Forum aktiv (trotzdem lohnt es sich evtl. hier nach Lösungen zu suchen oder seine Frage zu stellen).

Wir empfehlen, für deine Fragen/Probleme aktuell (zusätzlich) Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: http://redaxo.org/slack/
Benutzeravatar
cukabeka
Beiträge: 821
Registriert: 31. Mai 2006, 00:01
Wohnort: Aschaffenburg

"Anpinnen" von Artikeln mittels Linkmap

22. Feb 2013, 20:03

Kann mir jemand hiermit helfen? Ich will mehrere Artikel aus der Datenbank holen, diese sollen nach createdate sortiert sein. Außerdem sollen vornedran bestimmte Artikel gesetzt werden, die bestimmte IDs haben. Diese sollen in dem zweiten Teil der Abfrage nicht vorkommen. Ich hab das mal so versucht:

Code: Alles auswählen

SELECT id FROM rex_article 
WHERE (startpage = '0' AND status = '1') 
AND (id LIKE '3,2,1') ORDER BY nix_besonderes_sondern_der_reihenfolge_nach
OR ((path LIKE '%|10|%') OR (path LIKE '%|9|%') OR (path LIKE '%|19|%') OR (path LIKE '%|18|%') OR (path LIKE '%|40|%')) 
ORDER BY createdate DESC
LIMIT 1000
Die IDs sollen also zuerst selektiert werden, aber nicht sortiert, danach alle möglichen anderen Artikel geholt werden, aber nach createdate sortiert. Wenn diese schon bei der ID-Abfrage dabei waren, dann nicht mehr. Bin etwas ratlos.
Ist das ein fall für JOIN? eigentlich nicht, oder?
Zuletzt geändert von cukabeka am 22. Feb 2013, 20:54, insgesamt 1-mal geändert.
Viele Grüße
cukabeka

Benutzeravatar
cukabeka
Beiträge: 821
Registriert: 31. Mai 2006, 00:01
Wohnort: Aschaffenburg

Re: MySQL-Abfrage nach 2 Sortierkriterien

22. Feb 2013, 20:25

Dank Gregor konnte ich es wie folgt lösen:

Code: Alles auswählen

SELECT id FROM rex_article

WHERE (startpage = '0' AND status = '1') 
AND 
(
id IN (20,5,192)
OR ((path LIKE '%|10|%') OR (path LIKE '%|9|%') OR (path LIKE '%|19|%') OR (path LIKE '%|18|%') OR (path LIKE '%|40|%'))
)

ORDER BY IF(id IN (20,5,192), UNIX_TIMESTAMP(), createdate) DESC
danke nochmal gregor!
Viele Grüße
cukabeka

Benutzeravatar
cukabeka
Beiträge: 821
Registriert: 31. Mai 2006, 00:01
Wohnort: Aschaffenburg

"Anpinnen" von Artikeln mittels Linkmap

22. Feb 2013, 20:49

Hier vielleicht noch ein weiteres Update für alle, die es interessiert inkl. PHP. Ich habe das verwendet, um in einer Artikelliste vorne unabhängig Artikel "festpinnen" zu können und danach den Rest mit chronologisch sortierten Artikel zu füllen.

Code: Alles auswählen

$linkmap = "REX_LINKLIST[1]";
$linkmap_reverse = implode(",",array_reverse(explode(",","REX_LINKLIST[1]")) );

$sql = rex_sql::factory();
$sql->setQuery("
  SELECT id
  FROM rex_article
    WHERE (startpage = '0' AND status = '1') 
    AND 
    (
    id IN (".$linkmap.")
    OR ((path LIKE '%|".implode("|%') OR (path LIKE '%|", $cat_ids)."|%'))
    )
  ORDER BY FIND_IN_SET(id, '".$linkmap_reverse."') DESC, createdate DESC
  
  LIMIT 20
");
danke nochmal an gregor für seine hilfe. darauf wäre ich sicher nicht selbst gekommen :lol:
Viele Grüße
cukabeka

Zurück zu „Allgemeines [R4]“