Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MYSQL]automatyczne wypełnienie kolumny
bubu77
post 26.11.2008, 15:02:40
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 26.11.2008, 15:18:52
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 winksmiley.jpg 


--------------------
Dysortografik -> nie besztać za błędy ;P

pomogłem ? -> kliknij "pomógł" ;)
Go to the top of the page
+Quote Post
bubu77
post 27.11.2008, 10:57:35
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 27.11.2008, 11:05:41
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 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 winksmiley.jpg


--------------------
-- http://rafaljakubowski.net76.net --
google's my life ;)
Go to the top of the page
+Quote Post
bubu77
post 27.11.2008, 11:17:47
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 27.11.2008, 11:34:03
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 winksmiley.jpg


--------------------
-- http://rafaljakubowski.net76.net --
google's my life ;)
Go to the top of the page
+Quote Post
bubu77
post 27.11.2008, 11:48:07
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 27.11.2008, 12:01:25
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 smile.gif


--------------------
-- http://rafaljakubowski.net76.net --
google's my life ;)
Go to the top of the page
+Quote Post
bubu77
post 27.11.2008, 12:06:24
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 27.11.2008, 12:10:11
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)


--------------------
-- http://rafaljakubowski.net76.net --
google's my life ;)
Go to the top of the page
+Quote Post
bubu77
post 27.11.2008, 12:23:09
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 27.11.2008, 12:34:42
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.


--------------------
-- http://rafaljakubowski.net76.net --
google's my life ;)
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: 15.06.2025 - 19:38