Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wybieranie powtarzajacych sie rekordow
Forum PHP.pl > Forum > Bazy danych > MySQL
swaper
Witam
Mam w sumie chyba stosunkowo proste pytanie ale jakos nie moge sobie poradzic...CHodzi o to ze mam dwie kolumny w tabeli posts o nazwie post_id i topic_id (dokladnei chodzi o baze w phpbb). I wlanie jak ktos napisze nowy temat to dopisuje sie automatycznie nowy post_id i nowy topic_id. No ale jak ktos napisze odpowiedz do tego tematu to wtedy dopisuje sie nowy post_id ale topic_id zostaje taki jak w pierwszym poscie tego tematu. No i wlasnie potrzebuje wyciagnac te pola topic_id ktore sie powtarzaja (tzn ktos napisal odpowiedz...)[znaczy dokladnie to potrzebuje wyciagnac tekst tematu, ktory zostal napisane jako pierwszy, jezeli ktos nie powtorzy go w odpowiedzi...]. Wiem ze jest polecenie DISTINCT a jest polecenie odwrotne?? Bo wlasnie chyba czegos takiego mi trzeba zeby zwracal pola ktore sie powtarzaja. Jakby ktos mial chwile i pomogl to bym byl bardzo wdzieczny... Z gory dzieki za kazde info.

Pozdro Swaper
FiDO
  1. SELECT t.*, COUNT(*) ile_postow FROM tematy AS t
  2. LEFT JOIN posty AS p ON t.topic_id = p.topic_id
  3. GROUP BY t.topic_id
  4. HAVING ile_postow > 1

Nazwy pol/tabel musisz sobie oczywiscie dopasowac (nie znam bazy phpbb), ale idea ta sama.
Parti
Cytat(FiDO @ 2004-09-17 10:57:19)
  1. SELECT t.*, COUNT(*) ile_postow FROM tematy AS t
  2. LEFT JOIN posty AS p ON t.topic_id = p.topic_id
  3. GROUP BY t.topic_id
  4. HAVING ile_postow > 1

Nazwy pol/tabel musisz sobie oczywiscie dopasowac (nie znam bazy phpbb), ale idea ta sama.

To jest dobre, ale w tym konkretnym przypadku (phpbb) w tabeli topics jest kolumna replies (ilość odpowiedzi). Zatem chyba wystarczyłoby:
  1. SELECT * FROM phpbb_topics WHERE topic_replies >= 1


Dodatkowo jest też kolumna 'topic_first_post_id' - id pierwszego postu w temacie (tak gdybyś potrzebował).
swaper
Dzieki za szybka odpowiedz. Wlasnie dokladnei o to mi chodzilo smile.gif. Tylko teraz mam dalej problem...CHyba trafilem na dobre forum, trzeba bylo od razu tu pisac.. Wlasnie robie cos takiego:
[OT] Zainstalowalem forum phpbb. Dodalem sobie, zeby mozna bylo dodac nowe pola jak sie pisze nowy temat. Miedzy innymi pole data. Te dodatkowe pola zapisuje mi sie w tabeli posts_text. I teraz napisalem skrypcik ktory wysyla na mejla przypomnienie na dzien przed uplywem tej daty. I wszystko spoko chodzi tylko wywala sie przy odpowiedziach. Bo w tym mejlu z przypomnieniem maja byc wszystkie dane z posta czyli temat i te nowe pola i tak jak ktos napisze temat to wszystko spoko bo musi wypelnic pole z tematem ale jak ktos pisze odpowiedz to juz kicha bo on dodaje nowego posta w tabeli post_text ale nie ma on tematu i automatycznie nie wpisuje go do bazy sad.gif. No ale coz zaczalem grzebac w tabelach i wymyslilem cos takiego ze:
Kod
if ($row[2]!="")
     {
      printf ("Nazwa firmy: %s <br> ", $row[2]);
      $firma = $row[2];
     }
     else {
     $sql_query1 = "select topic_title from phpbb_2topics where topic_replies >= 1"
     or die ("Nie mozna wykonac zapytania");
     $wynik2 = mysql_query($sql_query1);
     if($wynik2)
     {
      while($row2 = mysql_fetch_row($wynik2))
      {
      printf ("Temat powtarzajacy sie: %s <br> ", $row2[0]);
            
      }


Moze wytlumacze.. Pod row mam wszystkie caly rekord z tabeli post_text, ktorego data jest jutro. I teraz pobieram sobie wszystkie dane po kole z tego rekordu i laduje do zmiennych zeby pozniej je przekazac do funkcji wysylajacej... No i wlasnie jezeli pole tematu nie jest puste to wpisz pole tematu pod zmienna $firma ale jezeli jest puste to musze znalezc ten tytul tematu (topic_title) z tabeli topics. I wlasnie kombinuje jak to zadzialac. Moze ktos sie zlituje i pomoze smile.gif. Bylbym bardzo wdzieczny i mam nadzieje ze zrozumiecie to co napisalem... Z gory dzieki za kazda pomoc.

Pozdro Swaper
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.