Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL] Insert .. select
Snowak
post 5.03.2008, 20:10:12
Post #1





Grupa: Zarejestrowani
Postów: 78
Pomógł: 2
Dołączył: 13.12.2007

Ostrzeżenie: (0%)
-----


Witam,
próbuję skopiować część jednej z tablicy do drugiej, dodając pola, które są zależne od poprzednich pól w tabeli, a mianowicie chce w jednej z kolumn dodać sumę wartości jakiejś kolumny z poprzednich rekordów. Czyli chcę otrzymać coś takiego:

id-cyfra-suma
1 - 10 - 0 [tutaj 0 bo zliczamy z poprzednich bez tej którą obecnie dodajemy]
2 - 30 - 10
3 - 20 - 40
4 - 15 - 60
5 - 70 - 75

Do kopiowania tabeli używam czegoś takiego:
  1. INSERT INTO test (id, title, points) SELECT id, title, points FROM tabela


Aby osiągnąć taki efekt dodawałem do selecta jeszcze jeden parametr: select sum(points) i teoretycznie powinien działać dobrze ale problem jest z tym jak MySQL działa - nie dodaje tych rekordów w locie, lecz robi to sobie wszystko w pamięci więc każde wywołanie sum(points) zwraca 0 bo tam nic nie ma, i dopiero jak to skończy to te wpisy dodaje.

A więc moje pytanie jest następujące - jak coś takiego zrobić? Bardzo mi zależy na czystym kodzie SQL, który jest jak najbardziej optymalny bo ta tabela może dojść do miliona rekordów. Próbowałem robić w jakiś specyficzny sposób update po tym dodaniu - działał, ale zabójczo wolno. Tak więc proszę (a wręcz błagam) Was o jak najszybciej działające rozwiązanie.

Z góry dzięki za pomoc.

[edit]
Hah, rozwiązaniem są triggery.. Tylko oświećcie mnie w jaki sposób mam je niby wgrać gdy nie mam dostępu do konsoli, lecz tylko przestarzały phpMyAdmin no i oczywiście możliwość wgrywania plików php? Jak powinien wyglądać prosty skrypt w PHP przez który dałoby się to wgrać?

Ten post edytował Snowak 5.03.2008, 20:35:53
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 10:02