gixx Opublikowano 9 Listopada 2012 Udostępnij Opublikowano 9 Listopada 2012 Mam tabelę z nazwami. Chcę aby obok kolumny powstała druga, i pokazywała ile dana nazwa występuje razy w tabeli. SELECT *, count(name) FROM tabela GROUP BY name; Działa prawie dobrze, bo jak jest duplikat to wyświetla go tylko raz. Jak zadziałać, by działało..? e: tzn. pokazuje się ilość wystąpień ale jak dana wartość występuje 2 i więcej razy, to pokazuje się tylko raz. Stąd nie ma opcji edytuj w phpmyadmin i nie mogę takich wierszy edytować.. multikonto Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Gucci Opublikowano 10 Listopada 2012 Udostępnij Opublikowano 10 Listopada 2012 Jeżeli ilość ma się wyświetlić w wyniku zapytania to powinieneś dopisać w zapytaniu: Select *, count(name) as ilosc from tabela group by name W przypadku kiedy chcesz miec to jako tabela w phpmyadmin to zrób tzw view.. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Mion Opublikowano 10 Listopada 2012 Udostępnij Opublikowano 10 Listopada 2012 e: tzn. pokazuje się ilość wystąpień ale jak dana wartość występuje 2 i więcej razy, to pokazuje się tylko raz. Stąd nie ma opcji edytuj w phpmyadmin i nie mogę takich wierszy edytować.. Ty w ogóle wiesz jak działa klauzula GROUP BY ? Napisz jeszcze raz co chcesz uzyskać. HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
gixx Opublikowano 10 Listopada 2012 Autor Udostępnij Opublikowano 10 Listopada 2012 Ok od początku, baza wygląda tak: NAZWA; NAZWASEO treść; inna treść treść jeszcze inna treść Chcę w kolumnie nazwaseo mieć takie wartości: tresc inna-tresc tresc-2 jeszcze-inna-tresc Czyli elementy które się nie powtarzają przepisać tylko po przemieleniu funkcją makeurl(). A takie elementy które występują 2 i więcej razy ponumerować, by w kolumnie NAZWASEO nie było duplikatów. Więc, jako że nie za bardzo wiem jak zrobić to w mysqlu wrzuciłem taki kod: $zapytanie = "SELECT * FROM tabela GROUP BY name HAVING count( * ) >1"; $idzapytania = mysql_query($zapytanie); // tu wyświetla tylko te które które występują 2x lub więcej while ($wiersz = mysql_fetch_array($idzapytania)) { $i = 0; $zapytanieq = "SELECT * FROM tabela WHERE name='$wiersz[name]'"; $idzapytaniaq = mysql_query($zapytanieq); // tu szuka konkretnych rekordów gdzie nazwa występuje 2x lub więcej while ($wierszq = mysql_fetch_array($idzapytaniaq)) { $i++; // tu tworzy url w formacie [nazwa-url]-[lp] $too = makeurl($wierszq[name]).'-'.$i; echo $too; // tu POWINNO zapisywać zmienną którą wcześniej wyświtliło $zap = "UPDATE `tabela` SET `nameseo`='".makeurl($wierszq[name]).'-'.$too."' WHERE name='$wierszq[name]'"; $iupp = mysql_query($zap); echo '<br>-------<br>'; } echo '<br>-------------------------------<br>'; } Niestety.. Skrypt ładnie wyświetla duplikaty ponumerowane, a zapisuje do bazy co innego. Wyświetla takie coś: tresc-1 tresc-2 inny-1 inny-2 inny-3 a zapisuje do bazy tresc-2 tresc-2 inny-3 inny-3 inny-3 Nie mam głowy jak to ogarnąć. A w poprzednim poście chodziło mi o to że wyświetla mi to: NAZWA; count(name) treść; 2 inna treść; 1 jeszcze inna treść; 1 zamiast tego: NAZWA; count(name) treść; 2 inna treść; 1 treść; 2 jeszcze inna treść; 1 bo nie miało chyba prawa wyświetlać inaczej.. starałem się to obejść w php ale się nie udało jak widać wyżej. Jak to rozwiązać żeby wreszcie poszło? multikonto Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Mion Opublikowano 10 Listopada 2012 Udostępnij Opublikowano 10 Listopada 2012 Nie wiem o co ci chodzi, ale zainteresuj się: SQL DISTINCT SQL GRUPU BY SQL COUNT (DISTINCT ) https://www.w3schools.com/sql/default.asp HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
gixx Opublikowano 10 Listopada 2012 Autor Udostępnij Opublikowano 10 Listopada 2012 Mam 2 kolumny, jedną z nazwami i jedna pustą. W tej pustej chcę mieć nazwę zamienioną na url. Przykładowa zamiana "Jakaś treść" -> "jakas-tresc". Tylko, że rekordów mam ponad 10k i czasem sie nazwa powtarza. Więc do kolumny pustej nie chcę kopiować zamienionych nazw "żywcem" tylko je ponumerować na końcu. "jakas-tresc-2", "jakas-tresc-3" itd. Tak by w tej kolumnie powtórzeń już nie było. Nie wiem tylko, czemu zamieszczony wyżej kod php wyświetla poprawnie nazwy, a jak przyjdzie do zapisu to zapisuje źle. W powyższym kodzie php nawet jeżeli $i w zmiennej $too zamienię (dla testu) na rand(1,9) to i tak do mysql nie trafiają rróżne rekordy. multikonto Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
bluesem Opublikowano 10 Listopada 2012 Udostępnij Opublikowano 10 Listopada 2012 A nie powinineś updatować po unikalnym id? aktualizujesz po nazwie za każdym razem. Dlatego ostatecznie dostajesz nazwę z iteracją rowna ilosci powtórzeń. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
gixx Opublikowano 11 Listopada 2012 Autor Udostępnij Opublikowano 11 Listopada 2012 Dokładnie w tym tkwił problem. Wpadłem na to dziś - dziękuję za odpowiedźi multikonto Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Zarchiwizowany
Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.