![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 98 Pomógł: 0 Dołączył: 5.02.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Zdarza się taki przypadek, że wykonując insert do tabeli, w której id jest auto_increment muszę to id umieścić również w tym rekordzie w innych polach. tabela wygląda tak: id | pole1 | pole2 | pole3 | pole4 | zapytanie:
Chcę uzyskać taki wpis aby wartość z pola id była wpisana też w pole2 i 4. W innych przypadkach pola te mają zupełnie inne wartości, więc nie mogę z nich po prostu zrezygnować. Jest jakiś inny sposób poza robieniem wcześniej selectu ostatniego id? Pozdrawiam i życzę Wesołych Świąt (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 1 595 Pomógł: 282 Dołączył: 24.09.2007 Skąd: Reda, Pomorskie. Ostrzeżenie: (0%) ![]() ![]() |
to jest bez sensu...
można to zrobić, ale to znaczy, że masz źle zaprojektowaną bazę lub struktury danych w programie... dlaczego powielasz zawartość indeksu zamiast odwoływac się bezpośrednio do pola `id` ? |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 98 Pomógł: 0 Dołączył: 5.02.2007 Ostrzeżenie: (0%) ![]() ![]() |
Tabela zawiera posty i odpowiedzi na nie. Id identyfikuje konkretny post/odp. Jest też kolumna zawierająca id ostatniej odpowiedzi dla danego postu. Gdy post nie ma odpowiedzi kolumna ta zawiera id tego postu, po to aby łatwiej można było wyciągnać np 10 ostatnich rekordów (postów lub starszych postów dla których odpowiedz znajduje się w grupie najnowszych 10 rekordów). Gdy pada odpowiedz na post, zmieniana jest wartość w komórce ostatniej odpowiedzi na id postu odpowiedzi.
Gdy dla postów bez odpowiedzi dam 0 w kolumnie "id ostatniej odp" to wtedy tracę możliwość odpowiedniego posortowania ich. |
|
|
![]()
Post
#4
|
|
Grupa: Przyjaciele php.pl Postów: 1 595 Pomógł: 282 Dołączył: 24.09.2007 Skąd: Reda, Pomorskie. Ostrzeżenie: (0%) ![]() ![]() |
najpierw:
Cytat Chcę uzyskać taki wpis aby wartość z pola id była wpisana też w pole2 i 4. a potem... Cytat Gdy pada odpowiedz na post, zmieniana jest wartość w komórce ostatniej odpowiedzi na id postu odpowiedzi. wg mnie to są dwa zupełnie różne rekordy... napierw piszesz o zmianie 2 pól, a potem o zmianie jednego... dalej nie wiem o co ci chodzi... coś ściemniasz o problemach z wyciąganiem odpowiedzi... nadal bez sensu - nie ma odpowiedzi - to pole `id_odpowiedzi` powinno być NULL... poza tym powiązanie postu i odpowiedzi na niego powinno być zrobione w oddzielnej tabeli... a tu: Cytat Gdy dla postów bez odpowiedzi dam 0 w kolumnie "id ostatniej odp" to wtedy tracę możliwość odpowiedniego posortowania ich. to już zupełnie nie masz racji, poczytaj o funkcjach IF() oraz IFNULL(), skojarz to z ORDER BY i zrozumiesz że przepisywanie `id` do dodatkowych kolumn nie ma sensu... Jeżeli chcesz wyciągać 10 ostanich postów / odpowiedzi - to nie polegaj na polu `id` - bo jego zawartość może ulec zmianie (np. w czasie przenoszenia bazy na inny serwer) i nie musi odzwierciedlać kolejności dodawania wpisów. Utwórz pole typu TIMESTAMP z domyślną wartością NOW() i sortuj wg niego... powodzenia... wesołych i spokojnych świąt bożego narodzenia... Ten post edytował nevt 23.12.2007, 19:51:23 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 98 Pomógł: 0 Dołączył: 5.02.2007 Ostrzeżenie: (0%) ![]() ![]() |
Różnice w tym ile pój ma mieć to id wynikały z tego że oszczędziłem opisywanie dokładnie przypadku, a samego problemu. Ta druga kolumna w którą chciałem wpisać id zawiera id postu na który ten post jest odpowiedzią. Ten problem właśnie rozwiązałem (dzięki Twojej odpowiedzi) stosując null i funkcję IFNULL, czyli teraz gdy rekord jest postem wartość w kolumnie "odpowiedz" jest null, gdy rekord jest odpowiedzią na jakiś inny post ta kolumna zawiera id tego postu.
Teraz kombinuje jak rozwiązać to podobnie z ORDER BY ---- edit: problem z ORDER BY też już usunięty w ten sam sposób (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Dzięki za pomoc (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Wesołych Świąt również życzę. Co mi da oddzielenie od siebie do różnych tabel postów i odpowiedzi oraz stworzenie tabeli która będzie je sobie przyporządkowywać? Wydajniej będzie? Ten post edytował szczypior 23.12.2007, 21:48:24 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 295 Pomógł: 7 Dołączył: 26.03.2004 Skąd: Opole Ostrzeżenie: (0%) ![]() ![]() |
Cytat powiązanie postu i odpowiedzi na niego powinno być zrobione w oddzielnej tabeli Niekoniecznie. Jeśli post składa sie z takich samych elementów jak wątek to po co mnożyć byty? Tutaj sprawa jest jeszcze prosta, bo zapewne chodzi o strukturę jednopoziomową, ale co by było gdyby wątki mogły być zagnieżdżane (komentarz do komentarza) dodawanie tabel niczego by nie dało, bo musiałoby być tabel n+1 tyle co poziomów (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Wystarczy jedna tabela. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 28.09.2025 - 01:08 |