Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MYSQL]automatyczne wypełnienie kolumny
Forum PHP.pl > Forum > Przedszkole
bubu77
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;
tomek_
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 
bubu77
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') )
mecenas
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
bubu77
Wolałbym jednak mieć "czyste" zapytanie w mySQL...
mecenas
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
bubu77
no można powiedzieć, że tak jest:) to ma ktośpomysł jak to zrobić?
mecenas
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
bubu77
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ą...
mecenas
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)
bubu77
  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 ;
mecenas
daj jeszcze oryginalne zapytanie i tabelę z której wstawiasz wartości.
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.