Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MYSQL]automatyczne wypełnienie kolumny
bubu77
post
Post #1





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 24.11.2008

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


Witam. Potrzebuje stworzyć zapytanie, które podczas wstawiania danych do tabeli znajdzie puste pole to wstawi tam konkretny znak. np. 'N'? w
accesie wygląda to tak:

  1. M41_Zamowienie_Szybka_Sciezka: IIf([_pki_015].[Zamówienie Szybka Ścieżka]="#empty";"N";[_pki_015].[Zamówienie Szybka Ścieżka])


a musze zrobić to w mysql. jak to zapisać?

  1. INSERT INTO testowa SELECT pos_id FROM akt_licz_bh;


Ten post edytował bubu77 26.11.2008, 15:04:25
Go to the top of the page
+Quote Post
tomek_
post
Post #2





Grupa: Zarejestrowani
Postów: 40
Pomógł: 4
Dołączył: 6.11.2008
Skąd: Bytom

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


Nie do końca wiem o co Ci chodziło, mógłbyś to bardziej sprecyzować.



może chodzi Ci o coś takiego 

  1. INSERT INTO tabelka1 (pole) VALUES (IF((SELECT p3 FROM t2 WHERE id=1) IS NULL, 'pole było nulem', 'pole nie było nulem') )




to zapytanie dodaje rokord to tableki 'tabelka1' w kolumnie 'pole' dodaje 'pole było nulem' jeśli pole 'p3' z tabeli 't2' ma wartość NULL lub 'pole nie było nulem' jesli jest tam coś innego niż NULL

wystarczy przerobić na swoje potrzeby (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)  
Go to the top of the page
+Quote Post
bubu77
post
Post #3





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 24.11.2008

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


tzn. chodzi mi dokładnie o to, że biore dane z jednej tabeli kopije do drugiej. jest jednak kolumna w której znajdują się wolne pola i tylko te pola chce wypełnić. Reszta pól zostaje bez zmian.
Dokładnie ten kod muszę przerobić:

  1. "INSERT INTO _pki_015_krok2 SELECT *
  2. FROM _pki_015_10_11 WHERE Bezposrednia_Posrednia_Sprzedaz = 'indirect' OR 'direct'


użyłem tego zapytania,jednak mi nie działa i nie wiem co jest nie tak...

  1. INSERT INTO testowa2 VALUES (IF((SELECT pos_id FROM akt_licz_bh) IS NULL, 'pole było nulem', 'pole nie było nulem') )


Ten post edytował bubu77 27.11.2008, 10:44:55
Go to the top of the page
+Quote Post
mecenas
post
Post #4





Grupa: Zarejestrowani
Postów: 80
Pomógł: 5
Dołączył: 23.09.2008
Skąd: Chełmno/Toruń

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


Możesz to zrobić przed wstawieniem danych, po stronie php (nie mówię, że to najlepsze czy jedyne rozwiązanie (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) ):
  1. <?php
  2. if(isset($_POST['twoja_zmienna'])
  3. if($_POST['twoja_zmienna']=="")
  4. $wartosc="brak";
  5. else
  6. $wartosc=$_POST['twoja_zmienna'];
  7. ?>


Chodzi oczywiście o samą ideę. Możesz również na tym etapie zająć się zapobieganiem sql injection.

następnie w sql piszesz:
  1. mysql_query("INSERT INTO gdzie(kolumna....) VALUES ($zmienna1, zmienna2,..., $wartosc)" OR die(...);


Proszę rozwiązanie potraktować poglądowo (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
bubu77
post
Post #5





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 24.11.2008

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


Wolałbym jednak mieć "czyste" zapytanie w mySQL...
Go to the top of the page
+Quote Post
mecenas
post
Post #6





Grupa: Zarejestrowani
Postów: 80
Pomógł: 5
Dołączył: 23.09.2008
Skąd: Chełmno/Toruń

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


Cytat(bubu77 @ 27.11.2008, 11:17:47 ) *
Wolałbym jednak mieć "czyste" zapytanie w mySQL...


Mimo wszystko - odradzałbym. W ten sposób narażasz się na ataki - chyba, że jest to baza trzymana na domowym komputerze, odcięta od świata, na którą jedynym atakiem może być herbata rozlana przez babcie (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
bubu77
post
Post #7





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 24.11.2008

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


no można powiedzieć, że tak jest:) to ma ktośpomysł jak to zrobić?
Go to the top of the page
+Quote Post
mecenas
post
Post #8





Grupa: Zarejestrowani
Postów: 80
Pomógł: 5
Dołączył: 23.09.2008
Skąd: Chełmno/Toruń

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


Jeśli masz pewność, że w przypadku pustego pola przekazuje NULL - możesz to zrobić w konfiguracji tabeli.
Ustawiasz NOT NULL i wartość DEFAULT na taką, jaka Ci pasuje - najszybsze i najprostsze rozwiązanie, ale... Nie bez wad (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
bubu77
post
Post #9





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 24.11.2008

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


no własnie tak próbowałem, ale zmieniło mi wartości które były w kolumnie także na wartość domyślną...
Go to the top of the page
+Quote Post
mecenas
post
Post #10





Grupa: Zarejestrowani
Postów: 80
Pomógł: 5
Dołączył: 23.09.2008
Skąd: Chełmno/Toruń

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


Cytat(bubu77 @ 27.11.2008, 12:06:24 ) *
no własnie tak próbowałem, ale zmieniło mi wartości które były w kolumnie także na wartość domyślną...

Więc wina musi leżeć najprawdopodobniej po Twojej stronie - wartość domyślna jest wstawiana jeśli przy dodawaniu do bazy sql dostaje NULLa tam, gdzie go być nie powinno...

Może spróbuj podać konfigurację tabeli (np. wklej crate table tej tabeli)
Go to the top of the page
+Quote Post
bubu77
post
Post #11





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 24.11.2008

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


  1. CREATE TABLE `raporty`.`_pki_015_krok5` ( `Nadrzedny numer zamowienia` varchar( 255 ) NOT NULL DEFAULT '',
  2. `Numer_zamowienia` varchar( 255 ) NOT NULL DEFAULT '',
  3. `Login Prac Dod Wiersz` varchar( 255 ) NOT NULL DEFAULT '',
  4. `Data Instalacji Usługi` varchar( 255 ) NOT NULL DEFAULT '',
  5. `iD Poduktu Taryfy` varchar( 255 ) NOT NULL DEFAULT '',
  6. `id` int( 11 ) NOT NULL DEFAULT '0',
  7. `M41_Zamowienie_Szybka_Sciezka` varchar( 255 ) NOT NULL DEFAULT '',
  8. `M23_Kod_POS-u` varchar( 255 ) NOT NULL DEFAULT '',
  9. `M39_ID_POS-u` varchar( 255 ) NOT NULL DEFAULT '',
  10. `M42_Podtyp_Zamowienia` varchar( 255 ) NOT NULL DEFAULT '',
  11. `M37_Kod_Jednostki_Sprzedazy` varchar( 255 ) NOT NULL DEFAULT '',
  12. PRIMARY KEY ( `id` ) ,
  13. KEY `TP_ID_PARTNERA` ( `TP_ID_PARTNERA` ) ,
  14. KEY `Kod_statusu` ( `Kod_statusu` ) ,
  15. KEY `Id_zadania` ( `Id_zadania` ) ) TYPE = MyISAM ;
Go to the top of the page
+Quote Post
mecenas
post
Post #12





Grupa: Zarejestrowani
Postów: 80
Pomógł: 5
Dołączył: 23.09.2008
Skąd: Chełmno/Toruń

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


daj jeszcze oryginalne zapytanie i tabelę z której wstawiasz wartości.
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: 15.09.2025 - 12:00