Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> SELECT i INSTER razem ?
Sh4dow
post
Post #1





Grupa: Zarejestrowani
Postów: 569
Pomógł: 0
Dołączył: 17.08.2003
Skąd: Dąbrowa Górnicza

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


Pytanie jest proste czy da sie polaczyc w jednym zapytaniu SELECT i INSTER ?
A tutaj model na ktorym chce to zrobić.
Najpierw pytam o id usera
[sql:1:1cf29f53c5]SELECT id FROM users WHERE level = '1'[/sql:1:1cf29f53c5]
i przy wyciaganiu kolejnych numerow ID users skrypt wykonuje INSTER do innej tabeli
[sql:1:1cf29f53c5]INSERT INTO msg_wiadomosci (od, do, temat, tresc) VALUES ('$user', '$wynik['id']', '$_POST['temat']', '$_POST['tresc']');[/sql:1:1cf29f53c5]
W tabeli users mam ponad 5000 userow wiec przy wysyalaniu wiadomosci do wszystkich userow skrypt zapetli sie ponad 5000 razy co zmasakruje baze. moze mysql ma mozliwosc samemu wykonania takiej operacji.
Go to the top of the page
+Quote Post
stach
post
Post #2





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 15.02.2003
Skąd: Ziemia

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


tak da sie:

[sql:1:33bd8cfb3e]INSERT INTO msg_wiadomosci (od, do, temat, tresc) SELECT kolumna_od, kolumna_do, kolumna_temat, kolumna_tresc FROM tabela;[/sql:1:33bd8cfb3e]

i jesli jeszcze ma byc to zalezne od info z innej tabeli to uzywasz [sql:1:33bd8cfb3e]JOIN[/sql:1:33bd8cfb3e].
Go to the top of the page
+Quote Post
Sh4dow
post
Post #3





Grupa: Zarejestrowani
Postów: 569
Pomógł: 0
Dołączył: 17.08.2003
Skąd: Dąbrowa Górnicza

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


stale wartosci to kolumny od, temat i tresc, zmienia sie tylko komumna do ktora jest brana z tabeli users

P.S. Mozesz mi napisac dokladnie jak ma wygladc zapytanie od a do z ? Bede wdzieczny (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
stach
post
Post #4





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 15.02.2003
Skąd: Ziemia

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


[sql:1:98f6b15efa]INSERT INTO msg_wiadomosci (od, do, temat, tresc) SELECT kolumna_od, id, kolumna_temat, kolumna_tresc FROM tabela_gdzie_sa_stale JOIN users;[/sql:1:98f6b15efa]

Albo

[sql:1:98f6b15efa]INSERT INTO msg_wiadomosci (od, do, temat, tresc) SELECT tabela_gdzie_sa_stale.kolumna_od, users.id, tabela_gdzie_sa_stale.kolumna_temat, tabela_gdzie_sa_stale.kolumna_tresc;[/sql:1:98f6b15efa]

No i jeszcze trzeba / mozna jakos tam WHERE wrzucic odpowiednio dostosowane do potrzeb.
Go to the top of the page
+Quote Post
Sh4dow
post
Post #5





Grupa: Zarejestrowani
Postów: 569
Pomógł: 0
Dołączył: 17.08.2003
Skąd: Dąbrowa Górnicza

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


No dobra, ale z bazy chce pobrac tylko jedna kolumne (do) inne kolumny (od, temat, tresc) brane sa z formularza. Wiec mam stworzyc tablice temp i tam zaladowac tymczasowo dane z formularza?
Bo chyba innego wyjscia nie ma ?
Go to the top of the page
+Quote Post
spenalzo
post
Post #6





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

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


Jest inne wyjście:
[php:1:b2f7da3d15]<?php
// pobieramy wszystkie ID i wrzucamy do tablicy
$q=mysql_query("SELECT id FROM users WHERE level = '1' ");
while($t=mysql_fetch_array($q))
{
$tmp[]=$t["id"];
}

// tworzymy liste wartosci pol
// nie wiem czy dobrze podstawione $user
foreach($tmp AS $user)
{
$sql[]="('".$wynik['id']."', '".$user."', '".$_POST['temat']."', '".$_POST['tresc']."')";
}

// zlaczamy liste wartosci
$sql=implode(", ",$sql);

// wykonujemy zapytanie
mysql_query("INSERT INTO msg_wiadomosci (od, do, temat, tresc) VALUES ".$sql);
?>[/php:1:b2f7da3d15]
Go to the top of the page
+Quote Post
Sh4dow
post
Post #7





Grupa: Zarejestrowani
Postów: 569
Pomógł: 0
Dołączył: 17.08.2003
Skąd: Dąbrowa Górnicza

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


Spenalzo twoja wersja dziala jak najbardziej poprawnie i sniga tak jak trzeba :]
Go to the top of the page
+Quote Post

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: 14.09.2025 - 21:50