Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: SELECT i INSTER razem ?
Forum PHP.pl > Forum > Bazy danych > MySQL
Sh4dow
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.
stach
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].
Sh4dow
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 biggrin.gif
stach
[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.
Sh4dow
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 ?
spenalzo
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]
Sh4dow
Spenalzo twoja wersja dziala jak najbardziej poprawnie i sniga tak jak trzeba :]
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.