Autor Zpráva
Gogo_v
Profil *
Dobry den. Zase řeším menší zádrhel :)

mam select
select NIC.id as nid,KL.id,NIC.ipv4_addr_3,NIC.ipv4_addr_4 from klient KL left join nic NIC on KL.id=NIC.Klientid where (select count(Klientid) from nic WHERE Klientid=KL.id) > 1  ORDER BY KL.id;


Výsledek :
+------+----+-------------+-------------+
| nid  | id | ipv4_addr_3 | ipv4_addr_4 |
+------+----+-------------+-------------+
| 2153 | 17 |          41 |          14 |
| 2154 | 17 |          41 |          15 |
| 6977 | 17 |         216 |         191 |
| 6978 | 17 |         216 |         192 |
| 7743 | 17 |         216 |         204 |
| 7756 | 17 |         216 |         205 |
| 2149 | 19 |          41 |          10 |
| 5065 | 19 |          41 |          79 |
| 6917 | 19 |         216 |         133 |
| 6918 | 19 |         216 |         134 |
| 5944 | 22 |         200 |         230 |
| 5945 | 22 |         200 |         231 |
| 5946 | 22 |         200 |         232 |
| 5947 | 22 |         200 |         233 |
| 7450 | 22 |         220 |          10 |
| 7636 | 22 |         220 |          11 |
| 7637 | 22 |         220 |         165 |
| 7638 | 22 |         220 |         166 |
| 7720 | 22 |         220 |         117 |
|   28 | 26 |         129 |          73 |
|   29 | 26 |         129 |          72 |
| 2002 | 26 |         129 |           0 |
| 2024 | 26 |         129 |         102 |
| 2395 | 26 |         130 |          62 |
|   34 | 31 |         129 |         131 |
+------+----+-------------+-------------+


A teď co potřebuju , odmazat záznamy podle následujících podmínek : počet id > 1, vracený výsledek ve skupine id obahuje v ipv4_addr_3 číslo mezi 211 - 220 pokud neobsahuje nemazat žádný záznam.
Z uvedeného příkladu tedy odmazat nid = 2153,2154,2149,5065,5944-5947.
Nevím jestli jsem to popsal uplně srozumitelně když tak bych to upřesníl pokud by někdo věděl jak na to :)
Děkuji za pomoc.
Kajman_
Profil *
Tyhle chcete smazat?

select n.*
from   nic n
join   (select KL.id
        from   klient KL
        inner  join nic NIC
        on     KL.id = NIC.Klientid
        where  NIC.ipv4_addr_3 between 211 and 220
        group  by KL.id) t
on     t.id = n.Klientid
where  n.ipv4_addr_3 not between 211 and 220
Gogo_v
Profil *
Kajman:
Užasné to je přesně ono :) takze místo toho select n.* staci dát delete from ?
Kajman_
Profil *
delete n
from ...


Bez záruky na ztracená data ;-)
Gogo_v
Profil *
Kajman:
To je samozřejmě jasné :) Já mockrát děkuju, nechápu kam na takové šílené selecty chodíte :) , jsem moc rád že věnujete své znalosti a čas i takovým lamám jako já :). ještě jednou díky.

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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

0