Autor Zpráva
Medvídek
Profil
Zdravím,
v databázích nejsem moc zběhlej, proto bych potřeboval poradit s jednim dotazem. Nevím, jestli to pujde vložit do jednoho dotazu.

Při přihlášení uživatele potřebuju zjisti všechny jeho objekty, k tomu zjsitit, jestli v druhé tabulce neexistuje nové zařízení k jeho objektům, pokud ano, tak vložit.

Nyní bych to dělal na tři dotazy takto:

//VYBER OBJEKTU K DANEMU UZIVATELI
SELECT id FROM ob WHERE uid = 13

while($o=mysql_fetch_array......)

 //VYBER VSECH ZARIZENI, KTERE JESTE NEJSOU V DB, TY BYCH POTREBOVAL VLOZIT A POKUD MOZNO, TAK MISTO PODMINKY (im.oid = $o["id"]) ABY TO PROVEDLO U VSECH OBJEKTU PRIHLASENEHO  UZIVATELE
 SELECT DISTINCT(pid) 
 FROM im 
 WHERE NOT EXISTS (SELECT oid FROM pir WHERE im.pid = pir.pid) AND im.oid = $o["id"]
 
 while($d=........)
 
  INSERT INTO ob (pid) VALUES ('".$d["pid"]."')



Snad mě chápete. Dá se to složit do jednoho dotazu (nebo alespoň do dvou?)
Kajman_
Profil *
INSERT INTO ob (pid)
SELECT DISTINCT(pid) 
 FROM im 
 WHERE NOT EXISTS (SELECT oid FROM pir WHERE im.pid = pir.pid) AND im.oid IN (SELECT id FROM ob WHERE uid = 13)
Medvídek
Profil
Kajman:
Ó, děkuji moc, ani ve snu mě nenapadlo, že to je takhle lehký :)

A pokud budu chtít vložit více druhů hodnot, tak přepokládám bude takto:


INSERT INTO ob (pid, hid, mid, bid)
SELECT DISTINCT(pid), hid, mid, bid 
 FROM im 
 WHERE NOT EXISTS (SELECT oid FROM pir WHERE im.pid = pir.pid) AND im.oid IN (SELECT id FROM ob WHERE uid = 13)
Kajman_
Profil *
Ano, viz. http://dev.mysql.com/doc/refman/5.5/en/insert-select.html (s tím, že pid není třeba obalovat závorkami, distinct se vztahuje ke kombinaci všech vypisovaných sloupců).
Medvídek
Profil
Kajman:
distinct se vztahuje ke kombinaci všech vypisovaných sloupců
No já potřebuju, aby se vztahoval pouze na pid, jelikož hid, mid a bid už stejné mohou být.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0