logi sisse meist KKK

On 2 mysql tabelit:

clients (id,name,...) client_stuff (id,client_id,name,...)

Nüüd oleks vaja kätte saada kirjed tabelist clients millel pole client_stuff tabelis ühtki kirjet.

küsitud Apr 30 '10 at 10:30

ptr's gravatar image

ptr
31136


Potentsiaalselt efektiivsem võib olla see:

select c.*
from clients c
left join client_stuff c1 on c1.client_id = c.id
where c1.client_id is null

Kui client_stuff tabelis võib kliendi kohta olla mitu kirjet, siis tuleks select asemel kasutada select distinct.

Väikeste kirjete arvude puhul on join ja not exists samaväärsed, mõlemad on sisuliselt nested loop. Suurema arvu kirjete puhul pakub aga join optimiseerijale rohkem võimalusi, nt hash join või merge join. Distinct toob muidugi sisse täiendava sorteerimisetapi, mis võib selle eelise nullida.

link

vastatud Apr 30 '10 at 12:47

Tambet%20Matiisen's gravatar image

Tambet Matiisen ♦♦
77791125

Ma ei tea, kas sain täpselt sinu küsimusest aru

select c.* from clients c where not exists(select c1.* from client_stuff c1 where c1.client_id=c.id)

link

vastatud Apr 30 '10 at 11:18

Ingmar%20Tammev%C3%A4li's gravatar image

Ingmar Tammeväli
61246

jah just seda oligi vaja, aitäh!

(Apr 30 '10 at 12:25) ptr
Sinu vastus
lülita eelvaade

Jälgi seda küsimust

By Email:

Pärast sisselogimist saad tellida muudatuse teavitusi siit

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *kaldkiri* või __kaldkiri__
  • **paks kiri** või __paks kiri__
  • link:[tekst](http://url.com/ "pealkiri")
  • pilt?![alt tekst](/path/img.jpg "pealkiri")
  • nummerdatud nimekiri: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • põhilised HTML märgendid on samuti toetatud

Pinu tööpakkumised

kõik pakkumised »

Küsimuse sildid:

×9

küsitud: Apr 30 '10 at 10:30

nähtud: 2,448 korda

viimati uuendatud: Apr 30 '10 at 12:47

Litsents: Creative Commons Attribution License | Kontakt: info@pinu.ee