Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [sql] przepisanie id insertowanego rekordu do innych kolumn
szczypior
post
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:
  1. INSERT INTO tabela(pole1,pole2,pole3,pole4) VALUES ('$pole1','$pole2','$pole3','$pole4')


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)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nevt
post
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%)
-----


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
Go to the top of the page
+Quote Post
szczypior
post
Post #3





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
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 13.10.2025 - 01:03