Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> 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.


--------------------
Warsztat: Linux: PHP, MySQL, Apache, NetBeans, C++, Qt-Creator
Użytkownik, słowo którego specjaliści IT używają, gdy chcą powiedzieć idiota
Zarządzaj swoim budżetem domowym
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
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].


--------------------
Warsztat: IIS 6.0 | PHP 4.3.10 && 5.0.3 | MySQL 4.1.9 | Smarty 2.6.7 | PEAR | EditPlus 2
Produkcja: FlipTiM
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 biggrin.gif


--------------------
Warsztat: Linux: PHP, MySQL, Apache, NetBeans, C++, Qt-Creator
Użytkownik, słowo którego specjaliści IT używają, gdy chcą powiedzieć idiota
Zarządzaj swoim budżetem domowym
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.


--------------------
Warsztat: IIS 6.0 | PHP 4.3.10 && 5.0.3 | MySQL 4.1.9 | Smarty 2.6.7 | PEAR | EditPlus 2
Produkcja: FlipTiM
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 ?


--------------------
Warsztat: Linux: PHP, MySQL, Apache, NetBeans, C++, Qt-Creator
Użytkownik, słowo którego specjaliści IT używają, gdy chcą powiedzieć idiota
Zarządzaj swoim budżetem domowym
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 :]


--------------------
Warsztat: Linux: PHP, MySQL, Apache, NetBeans, C++, Qt-Creator
Użytkownik, słowo którego specjaliści IT używają, gdy chcą powiedzieć idiota
Zarządzaj swoim budżetem domowym
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 Aktualny czas: 22.08.2025 - 06:18