![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 239 Pomógł: 20 Dołączył: 19.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
Ten post edytował poli25 23.08.2010, 12:47:56 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 654 Pomógł: 121 Dołączył: 27.10.2007 Skąd: Poznań, Łódź Ostrzeżenie: (0%) ![]() ![]() |
A nie lepiej założyć na tablicy index typu unique? Patrząc na strukturę tabelki sugerowałbym założenie takiego indeksu na wszystkie 3 kolumny - zabezpieczy to przed duplikacją rekordów od strony bazy danych.
Jednak właściwym rozwiązaniem byłoby sprawdzenie istnienia rekordu o podanych parametrach w bazie przed zapisaniem nowego... W Twoim przypadku zarówno indeks jak i sprawdzenie może być trudne do wdrożenia ze względu na kolumnę [tresc] typu [text]... Przydałaby się jeszcza dodatkowa kolumna, w której dane byłby bardziej jednoznaczne ![]() Pozdrawiam -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
przydałoby się unikalne ID transakcji, po którym przelewy będą rozróżniane bo skoro dane są wprowadzane przez użytkowników to wystarczy jakaś mała literówka i już skrypt rozpozna to jako 2 różne transakcje, właściwie to chyba wystarczy jak numer faktury umieścisz w oddzielnej kolumnie jak INT
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 239 Pomógł: 20 Dołączył: 19.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
ale te duble zdarzaja się naprawdę rzadko chciałbym zeby mi pokazało po prostu tak jak sobie to wyobrażam w pytaniu. ja dane z bazy moge wyciagac tylko za pomoca php a do programu na którym pracuej nie mam dostępu. zrzut z bazy to jest przyklad i tak pracuje na postgresqlu ale z tym sobie juz poradze. chodzi mi o sposób wyciągnięcia tego mecze sie z tym od tygodnia;/
A nie lepiej założyć na tablicy index typu unique? Patrząc na strukturę tabelki sugerowałbym założenie takiego indeksu na wszystkie 3 kolumny - zabezpieczy to przed duplikacją rekordów od strony bazy danych. Niestety ja tylko moge dane z bazy wyciągać ale nie mam zadnych innych uprawnień i nie mogę tego zrobić. Chciałbym otrzymać takie rozwiązanie jak w pytaniu wtedy bede w 100% usatysfakcjonowany. ![]() Ten post edytował poli25 23.08.2010, 13:24:21 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
1) Zajrzyj w ten temat http://forum.php.pl/index.php?showtopic=157405&hl= i przeczytaj cały. Jest tam wiele porad wydajnościowych i problem bardzo podobny
2) Spróbuj takie zapytanie
Ten post edytował wookieb 23.08.2010, 13:44:48 -------------------- |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
w takim razie możesz zrobić zapytanie z COUNT i GROUP BY na polach id_kontrahenta, tresc, kwota, i wyciągasz tylko te które mają COUNT większy niż 1, ale to zadziała tylko jeżeli będą identyczne wpisy, czyli wystarczy jakaś dodatkowa spacja w polu treść i już to nie zadziała
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 654 Pomógł: 121 Dołączył: 27.10.2007 Skąd: Poznań, Łódź Ostrzeżenie: (0%) ![]() ![]() |
Skoro tak to moja propozycja wygląda tak:
Przykład Mając tablicę z rekordami jakie podałeś jako przykład otrzymasz: Kod [1_150_15][] rekord 1 [1_500_10][] rekord 2 [1_1500_85][] rekord 3 [1_150_50][] rekord 4 [1_150_15][] rekord 5 [2_500_89][] rekord 6 [2_800_80][] rekord 7 [2_800_80][] rekord 8 [3_950_13][] rekord 9 [3_100_00][] rekord 10 Powyższy przykład ukazuje, iż zdublowane wpisy będą dla klucza [1_150_15] i [2_800_80]. Po zbudowaniu takiej tablicy wystarczy już sobie foreach'em wyświetlić wszystkie elementy - lub zrobić var_dump ![]() Pozdrawiam -------------------- |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 239 Pomógł: 20 Dołączył: 19.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
w takim razie możesz zrobić zapytanie z COUNT i GROUP BY na polach id_kontrahenta, tresc, kwota, i wyciągasz tylko te które mają COUNT większy niż 1, ale to zadziała tylko jeżeli będą identyczne wpisy, czyli wystarczy jakaś dodatkowa spacja w polu treść i już to nie zadziała super podpowiedz. Trochę siedzę w postgresqlu ale nie sądziłem ze mozńa tak to obejść ![]() ![]() ![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 6.06.2025 - 18:51 |