PHP.EE FOORUM   
Nimi:   Pass:   Mäleta mind! 
   Teemad | php.ee esilehele | registreeri | Märgi kõik teemad loetuks | #php.ee Skype vestlus | RSS
UUS TEEMA  OTSI  Lehekülgi: 1
SQL 2 tabeli võrdlus JOIN
Postitaja: keegi_II 2015-04-22 19:49:39
SELECT * FROM tabel1 INNER JOIN tabel2 ON tabel1.id = tabel2.ok
töötab ja väljastab kirjed, mis võrduvad
Sooviks aga leida kirjed tabelist1 mille id kirjet tabelis2 ei ole
SELECT * FROM tabel1 INNER JOIN tabel2 ON tabel1.id != tabel2.ok
sellisel kujul väljastab kõik kirjed tabelist1
RE: SQL 2 tabeli võrdlus JOIN
Postitaja: blaa 2015-04-22 20:04:40
SELECT * FROM tabel1 left JOIN tabel2 ON tabel1.id != tabel2.ok where tabel2.id (või tabel2.ok) is null
RE: SQL 2 tabeli võrdlus JOIN
Postitaja: blaa 2015-04-22 20:05:20
parandus
SELECT * FROM tabel1 left JOIN tabel2 ON tabel1.id = tabel2.ok where tabel2.id (või tabel2.ok) is null
RE: SQL 2 tabeli võrdlus JOIN
Postitaja: keegi_II 2015-04-22 22:33:05
tnx
ja kui sooviks veel kontrollida tabelist2 lahtrid see!='12'
RE: SQL 2 tabeli võrdlus JOIN
Postitaja: Mehis Tõivet 2015-04-23 13:57:03
RE: SQL 2 tabeli võrdlus JOIN
Postitaja: keegi_II 2015-04-23 18:39:27
tänan lingi eest, kuid sellest polnud abi

SELECT * FROM tabel1 LEFT JOIN tabel2 ON tabel1.id = tabel2.ok WHERE tabel2.ok is null

töötab ime kenasti aga oleks vaja lisada veel

SELECT * FROM tabel1 LEFT JOIN tabel2 ON tabel1.id = tabel2.ok WHERE tabel2.ok is null AND tabel2.see = '12'

ja ei anna enam midagi
RE: SQL 2 tabeli võrdlus JOIN
Postitaja: Mehis Tõivet 2015-04-23 22:53:56
Kindel, et sul LEFT JOIN vasteid üldse saab?

Kui sul järgmisest päringust midagi välja ei tule, siis neil tabelitel pole ühist osa "t1.id = t2.ok"

SELECT t2.* FROM tabel1 t1 JOIN tabel2 t2 ON (t1.id = t2.ok)

kui ühist osa ei ole, siis ei oma tegelikult see WHERE osa enam pointi.

Samas kui sa pöörad joinitavad tabelid ümber, siis omab WHERE veel iva.

SELECT * FROM tabel2 LEFT JOIN tabel1 ON (tabel1.id = tabel2.ok) WHERE tabel2.ok is null AND tabel2.see = '12';
RE: SQL 2 tabeli võrdlus JOIN
Postitaja: Mehis Tõivet 2015-04-23 22:56:46
ahjah, märkamata jäi, ei kasutad jonimisel "(tabel1.id = tabel2.ok)" ja WHERE osas paned tingimisu, et see jama joini veerg oleks null " WHERE tabel2.ok is null" - nii asjad ei tööta. Kas see "ok is null" on ikka vajalik tingimus - ma ei usu.
RE: SQL 2 tabeli võrdlus JOIN
Postitaja: Mehis Tõivet 2015-04-23 23:01:55
sa peaks uurima tiba LEFT JOIN'i iva http://en.wikipedia.org/wiki/Join_%28SQL%29#Left_outer_join

ja vbl ei jookse mööda külge maha ka "null" võrdluste kohta teadmine https://dev.mysql.com/doc/refman/5.0/en/working-with-null.html
RE: SQL 2 tabeli võrdlus JOIN
Postitaja: keegi_II 2015-04-24 06:51:29
Natuke lahtiseletamiseks
tabel1
id | veerg2 | veerg3 jne
table2
veerg1 | ok | see
Kontrollida oleks vaja, kas (tabel2) sisaldab (tabel1) olevat id ja ka (see) unikaalset numbrit. Kui EI siis väljastan (tabel1) oleva info (veerg1), (veerg2) jne
RE: SQL 2 tabeli võrdlus JOIN
Postitaja: blaa 2015-04-24 17:58:39
tabel2.ok is null AND tabel2.see = '12'

Siin sisuliselt need tingimused välistavad üksteist. Sul ei ole ju tabel2-s rida, kus 'ok' on null ja 'see' on '12'.

Anna meile kahe tabeli sisu ja veerud ning näita, milline peab olema lõpptulemus. Meil pole mõtet siin huupi tulistada, kui sa tegelikult ei tea, mida sa küsid.
RE: SQL 2 tabeli võrdlus JOIN
Postitaja: keegi 2015-04-24 19:32:35
proovin siis mõtte lahti seletada.
Sooviks väljastada tabelist 1 andmeid 1 kaupa suvalises järlekorras
ORDER BY rand() LIMIT 1
aga seda nii, et juba näidatud rida seekord mitte korrata.
Siis kirjutan teise tabelisse juba väljastatud rea (id) ja unikaalse muutuja selleks korraks.
Nüüd on vaja kontrollida, mis rida ei ole selle unikaalse numbrida näidatud.
RE: SQL 2 tabeli võrdlus JOIN
Postitaja: blaa 2015-04-24 23:59:33
SELECT * FROM tabel1 LEFT JOIN tabel2 ON tabel1.id = tabel2.ok WHERE tabel2.ok is null or tabel2.see != '12' order by rand () limit 1
RE: SQL 2 tabeli võrdlus JOIN
Postitaja: keegi 2015-04-25 08:31:53
Tänan, just see mida vaja

Leheküljed: 1

©2002-2013 Martin Rebane & PHP.ee kaasautorid
  0.0808751583099