ugrás a tartalomhoz

If Then mysql

forumferenc · 2013. Szep. 2. (H), 13.32
Sziasztok!

Azt szeretném megoldani, mysql-ben hogy:
1. Lekérek egy táblából egy id-t azt eltárolom egy változóban (@valtozo).
2. Ha a változó értéke NULL (nem létezik) akkor szúrjon be egy sort egy másik táblába.

Ezt hogy lehet megcsinálni?

Köszi
 
1

Dokumentáció

Hidvégi Gábor · 2013. Szep. 2. (H), 14.09
A dokumentációból mit sikerült kideríteni?
2

Ezzel próbálkoztam

forumferenc · 2013. Szep. 2. (H), 14.13
Ilyesmivel próbálkoztam de nem megy...
SELECT id INTO @aid FROM `lista` WHERE aname='teszt' LIMIT 0,1;
IF ISNULL(@aid) THEN INSERT INTO `szer_k` (`id`,`a`,`b`) VALUES (NULL, 'Teszt2',@aid);
3

Mi a hibaüzenet?

Hidvégi Gábor · 2013. Szep. 2. (H), 14.16
Mi a hibaüzenet?
4

Ez..

forumferenc · 2013. Szep. 2. (H), 14.20
IF ISNULL( @aid ) THEN INSERT INTO `szer_k` ( `id` , `a` , `b` )
VALUES (
NULL , 'Teszt2', @aid
);

A MySQL mondta:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF ISNULL(@aid) THEN INSERT INTO `szer_k` (`id`,`a`,`b`) VALUES (NULL, 'Teszt2',' at line 1
6

Ha megkeresed a

Hidvégi Gábor · 2013. Szep. 2. (H), 14.34
Ha megkeresed a dokumentációban az IF-et, akkor láthatod, hogy a Compound Statement-en belül van, amiről a következőt lehet olvasni:
This section describes the syntax for the BEGIN ... END compound statement and other statements that can be used in the body of stored programs
Emiatt ad hibát.
5

JAVITVA

forumferenc · 2013. Szep. 2. (H), 14.32
SELECT id INTO @aid FROM `lista` WHERE aname='teszt' LIMIT 0,1;
IF ISNULL(@aid) THEN INSERT INTO `szer_k` (`id`,`a`,`b`) VALUES (NULL, 'Teszt2',10);
7

Nem értem

vbence · 2013. Szep. 2. (H), 14.57
Nem érthető, hogy mi is a cél. Szeretnél annyi 'Test2'-t tartalmazó sort a második táblában ahány NULL id-jű elemed van az elsőben?

Ennek semmi értelme, de itt van rá a lekérdezés:
INSERT INTO masiktabla
SELECT null, 'Test2', null
FROM elsotabla
WHERE elsotabla.id IS NULL
8

Nem,

forumferenc · 2013. Szep. 2. (H), 15.05
Nem, annyit szeretnék, hogy lekérek az egyik táblából egy id-t az eltárolom egy változóban.
Majd ezt a változót megvizsgálom és hogyha nem volt ilyen id tehát az értéke NULL akkor egy másik táblába beszúrok 1 sort.
9

Ez valami iskolai feladvány

H.Z. · 2013. Szep. 2. (H), 15.07
Ez valami iskolai feladvány vagy konkrét feladat van mögötte?
Utóbbi esetben jó lenne, ha inkább a tényleges feladatot vázolnád, mert erős a gyanúm, hogy tévúton jársz.
10

Nem iskolai feladat

forumferenc · 2013. Szep. 2. (H), 15.13
Igazából ennyit szeretnék, ez a konkrét feladat.
PHP-val simán menne, de én csak Mysql-t akarok használni.
11

Szimpla mazochizmusból, vagy

tgr · 2013. Szep. 2. (H), 15.30
Szimpla mazochizmusból, vagy van rá valami okod is? Ha igen, valószínűleg hasznosabb tanácsokat tudunk adni, ha leírod, mi az.
13

Részleteznéd a célt?

Pepita · 2013. Szep. 3. (K), 20.33
Ez valami naplóféle lenne? (A második táblába írás)
Biztosan megoldható csak MySql-el is (ha ragaszkodsz hozzá), de ehhez én még mindig nem látom át a célt.
Mi van az első táblában? (Pl. felhasználók?)
Mit kell írj a másodikba, ha 0 sort kaptál? (Tehát mi a 2. tábla szerepe)
Mi van, ha 1 sort kaptál?

Komplett feladatra lehet helyes irányvonalat adni, ez így túl kínai, tippelgetni én nem tudok rá.
12

Ez még így sem érthető

vbence · 2013. Szep. 2. (H), 17.56
Szóval van egy táblád és arra vagy kíváncsi, hogy van-e benne olyan rekord, amelynek NULL az id-je? Ha van ilyen rekord akkor be akarsz szúrni pontosan egy rekordot egy másik táblába?
INSERT INTO masodiktabla
SELECT "nem tudom mi"
FROM elsotabla
WHERE id IS NULL
LIMIT 1;
Az SQL nem szekvenciális programozás. Vagyis (SELECT és INSERT segítségével) nem tudsz olyat csinálni, hogy soronként levizsgálsz valamit, legalább is nem úgy ahogy írtad.

Ha tárolt eljárást (stored procedure) kell írnod, az persze más tészta. Ellenőrizd a MySql CURSOR dokumentációját.