Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql] ostatnie artykuly z kazdej kategorii
Forum PHP.pl > Forum > Bazy danych > MySQL
phpion
Hej!
Mam taka strukture tabel:
  1. CREATE TABLE categories (
  2. id TINYINT(2) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
  3. name CHAR(30) NOT NULL,
  4. queue TINYINT(2) UNSIGNED NOT NULL DEFAULT 1,
  5. items SMALLINT(5) UNSIGNED NOT NULL DEFAULT 0,
  6. visible ENUM('0', '1') NOT NULL DEFAULT '1'
  7. ) Engine=MyISAM;
  8.  
  9. CREATE TABLE articles (
  10. id MEDIUMINT(8) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
  11. title CHAR(60) NOT NULL,
  12. short CHAR(255) NOT NULL,
  13. content TEXT NOT NULL,
  14. date DATETIME NOT NULL,
  15. category TINYINT(2) UNSIGNED NOT NULL,
  16. visible ENUM('0', '1') NOT NULL DEFAULT '1',
  17. FULLTEXT (title, short, content)
  18. ) Engine=MyISAM;

Chcialbym jednym zapytaniem wybrac ostatnie (najnowsze) artykuly z kazdej kategorii.
Probowalem w ten sposob:
  1. SELECT a.id, a.title, a.short, a.content, a.date, c.name FROM articles a, categories c WHERE a.visible="1" AND a.category=c.id GROUP BY a.category
  2. SELECT c.id, c.name, (SELECT a.id, a.title, a.short, a.content, a.date FROM articles a WHERE a.visible="1" AND a.category=c.id ORDER BY date LIMIT 1) FROM categories c ORDER BY c.queue
  3. SELECT c.id, c.name, a.title FROM categories c LEFT JOIN articles a ON c.id=a.category GROUP BY c.id ORDER BY a.date DESC

1 i 3 sposob pokazuja po jednym poscie z kazdej kategorii ale jest to pierwszy post (najstarszy). Sposob 2 (nieco silowy tongue.gif) zwraca natomiast:
  1. #1241 - Operand should contain 1 column(s)

Prosze o pomoc.

PS: juz trzeci raz probuje dodac posta - za kazdym razem nie widze aby sie pojawil. Sory za ewentualne duble :/
timex
Hej. Nie sprawdzalem tego, ale sproboj tak:

  1. SELECT a.id, a.title, a.short, a.content, a.date, c.name FROM articles a, categories c WHERE a.visible="1" AND a.category=c.id ORDER BY a.date DESC;


W razie potrzeby zamien DESC na ASC (kolejnosc malejaco lub rosnaco)

Co do limitow, czyli tak jak napisales ma wyswietlac 3 posty, wstawiasz poprostu na koncu
  1. LIMIT(0,3)


Mam nadzieje, ze to Ci jakos pomoglo smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.