Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Uporządkowanie bazy danych
Forum PHP.pl > Forum > Bazy danych > MySQL
KR2615
Na dzień dobry proszę nie hejtować, że przeklejam problem z innego forum ale na forum Wordpressa nie ma chyba takich znawców SQLa a problem nie dotyczy czysto WP tylko bardziej bazy.

Po krótce wyjaśnię wam strukturę bazy daych tego CMSa jeśli ktoś nie zna:

wp_posts - tabela z postami (zawiera odniesienia do wp_users)
wp_users - tabela z użytkownikami będącymi jednocześnie autorami postów
wp_comments - tabela z komentarzami, zawiera ID autora i ID elementu, w tym przypadku ID postu z wp_post

O co chodzi?

Dostałem bazę (nie wordpressa) gdzie w jednej tabeli były i posty i komentarze. Logika tego wyglądała tak, że jeśli powtarzały się elementy z takim samym post_title to ta z najmniejszą wartością post_date była postem a reszta komentarzami. O ile z wyodrębnieniem tych encji sobie poradziłem w następujący sposób:
-przeniosłem tabelę wp_posts do wp_posts_and_comments
-utworzyłem strukturę wp_posts
-właściwe posty przeniosłem kwerendą:
INSERT INTO wp_posts (SELECT * FROM wp_posts_and_comments GROUP BY post_title ORDER BY post_date ASC LIMIT 1)

Przeszło 32 000 z 35 000 rekordów. Pozostałe 3 000 to komentarze. Nie wiem niestety, jak je wydobyć z wp_posts_and_comments i własciwym INSERTem wrzucić do wp_comments tak, żeby miały przypisany właściwy ID posta i id autora.

Czy ktoś jest na tyle obcykany w SQLu żeby mógł mi klepnąć na to komendę? Kwerenda wklejajaca komentarze powinna ona wyglądać mniej więcej tak:

  1. INSERT INTO `wp_comments` (`comment_ID`, `comment_post_ID`, `comment_author`, `comment_author_email`, `comment_author_url`, `comment_author_IP`, `comment_date`, `comment_date_gmt`, `comment_content`, `comment_karma`, `comment_approved`, `comment_agent`, `comment_type`, `comment_parent`, `user_id`) VALUES
  2. (1, (subkwerenda znajdująca ID posta z takim samym post_title), , 'naza_uzytkownika', '', '', '2015-04-06 09:54:46', '2015-04-06 07:54:46', 'tresc komentarza', 0, '1', '', '', 0, 0);


Nadal jednak nie wiem, jak wyszukac te 3 000 komentarzy czyli duplikatow post_title uszeregowanych wg daty rosnąco z wyjątkiem pierwszego.
markuz
Spróbuj tak samo z tym, że OFFSET (zamiast LIMIT) ustaw na 1:
  1. OFFSET 1

Ew.
  1. LIMIT 1000, 1
(Pobierz max. 1000 rekordów z OFFSET = 1 czyli zacznie od rekordu 2 w twoim przypadku jest to już komentarz)

Edit. tylko nie grupuj już według post_title bo Ci nie znajdzie żadnego rekordu.
KR2615
Jak zmieniłem LIMIT 1 na OFFSET 1 i pozostawiłem grupowanie to dostałem całe 35tys. wyników. Jak więc mam zmodyfikować to zapytanie?
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.