Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  mysql query märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
Rain01
HV kasutaja
Rain01

liitunud: 02.09.2005




sõnum 03.04.2008 17:50:08 mysql query vasta tsitaadiga

Üritan luua mingit otsingut ja sattusin sellise pähkli otsa

Tabel selline
id  parent 
      10  1
      12  1
      14  1
      10  2
      15  2
      20  2
      15  3
      30  3
      45  3 


Selline query
SELECT parent FROM table WHERE id IN ( '10', '15') GROUP BY parent


ehk siis tahaks kätte saada parent kus id = 10 ja 15
mis oleks 2 ainult aga kuna mul see query ilmselt täesti vale siis ta võtab kõik 1, 2 ja 3
kuna
1 on id = 10
2 on id = 10 ja 15
3 on id = 15

või kui näiteks otsiksin id järgi kus 10 ja 12 siis annaks ainult parent 1
Kommentaarid: 13 loe/lisa Kasutajad arvavad:  :: 1 :: 1 :: 10
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 03.04.2008 17:54:31 vasta tsitaadiga

Sul on tabel valesti tehtud, id on unikaalne number ja seda ei saa kuidagi mitu ühesugust olla.
_________________
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Rain01
HV kasutaja
Rain01

liitunud: 02.09.2005




sõnum 03.04.2008 17:58:56 vasta tsitaadiga

andrusny kirjutas:
Sul on tabel valesti tehtud, id on unikaalne number ja seda ei saa kuidagi mitu ühesugust olla.
ära pane id tähele... ja tegelt see saab alati ühesugune olla kui pole auto_increment pandud
parem ütle kas sa oskad mind aidata?
Kommentaarid: 13 loe/lisa Kasutajad arvavad:  :: 1 :: 1 :: 10
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
kapa24
HV vaatleja

liitunud: 23.01.2003




sõnum 03.04.2008 18:06:01 vasta tsitaadiga

andrusny kirjutas:
Sul on tabel valesti tehtud, id on unikaalne number ja seda ei saa kuidagi mitu ühesugust olla.


Kust võtad, et valesti tehtud ja id on unikaalne?

CREATE TABLE kartul (
    id INT(11) DEFAULT '10',
    nimi VARCHAR(100) PRIMARY_KEY
);


Asjast:

Päring ei ole nii lihtne, kuid suund peaks olema midagi sellist:

SELECT t1.parent
FROM
    table t1
WHERE
    t1.parent IN (SELECT t2.parent FROM table t2 WHERE t1.parent = t2.parent AND t1.id IN (10,15) AND t2.id IN (10,15) AND t1.id != t2.id)
GROUP BY t1.parent


EDIT: see pole kah päris see. Täpsusta veel veidi, too mõni näide. Kui parent võib erinev olla kahel elemendil, siis eeltoodud päring ei tööta.


viimati muutis kapa24 03.04.2008 18:17:09, muudetud 1 kord
tagasi üles
vaata kasutaja infot saada privaatsõnum
AMD
HV veteran
AMD

liitunud: 29.07.2003




sõnum 03.04.2008 18:16:27 vasta tsitaadiga

Äkki midagi sellist...
sql:
  1. SELECT t1.parent FROM tabel AS t1 JOIN tabel AS t2 ON (t1.parent = t2.parent) WHERE t1.id = 10 AND t2.id = 15;

_________________
From now on, the forum is owned by AMD.That means that you are NO LONGER allowed to talk about, or even mention *ntel.
Kommentaarid: 335 loe/lisa Kasutajad arvavad:  :: 145 :: 3 :: 12
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
mikk36
HV Guru
mikk36

liitunud: 21.02.2004




sõnum 03.04.2008 19:47:38 vasta tsitaadiga

kapa24 kirjutas:
andrusny kirjutas:
Sul on tabel valesti tehtud, id on unikaalne number ja seda ei saa kuidagi mitu ühesugust olla.


Kust võtad, et valesti tehtud ja id on unikaalne?

CREATE TABLE kartul (
    id INT(11) DEFAULT '10',
    nimi VARCHAR(100) PRIMARY_KEY
);
kui id pole enam unikaalne, siis pole tegu id vaid millegi muuga juba
Kommentaarid: 85 loe/lisa Kasutajad arvavad:  :: 0 :: 2 :: 78
tagasi üles
vaata kasutaja infot saada privaatsõnum
troglodyte
Kreisi kasutaja
troglodyte

liitunud: 09.08.2002




sõnum 03.04.2008 20:58:05 vasta tsitaadiga

Kus on öeldud, et id (identifikaator) peab alati just nimelt unikaalne olema?
Kommentaarid: 34 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 34
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Rain01
HV kasutaja
Rain01

liitunud: 02.09.2005




sõnum 03.04.2008 22:47:53 vasta tsitaadiga

mikk36 kirjutas:
kapa24 kirjutas:
andrusny kirjutas:
Sul on tabel valesti tehtud, id on unikaalne number ja seda ei saa kuidagi mitu ühesugust olla.


Kust võtad, et valesti tehtud ja id on unikaalne?
kui id pole enam unikaalne, siis pole tegu id vaid millegi muuga juba

Sul on võibolla jumala õigus aga keegi polegi küsinud kas ma tegin id õigesti või mis see id on vaid see oli lihtsalt näidisena kus ta polnud unikaalne ja vabandan parandan siis ära selle kuna ta ei ole id

Tänan teisi kes aitasid
AMD oma on päris hea aga kui tahaks veel võibolla kolmanda otsimis parameetri näiteks lisada või veel rohkem siis mu mõistus keerab jälle ära :P
SELECT t1.parent FROM table AS t1 JOIN table AS t2 ON (t1.parent = t2.parent) WHERE t1.id = '15' AND t2.id = '10'
/*---näiteks---
AND t2.id = '20'
*/
GROUP BY t1.parent


nuh selle otsingu point midagi sellist et kui id 1, id 2, id 3, ... id 88 klapivad parentiga mis on sama kõigil id'del siis näitaks seda
ja kui nüüd täpsem olla siis id all mõtlesin vist gruppe, et parent on siis nagu teisest tabelist item'i id, et siis kui näiteks valib välja lõpuks näiteks selle parent 2 siis saab teisest tabelist võtta id 2 mille nimi oleks näiteks vibu
Kommentaarid: 13 loe/lisa Kasutajad arvavad:  :: 1 :: 1 :: 10
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
AMD
HV veteran
AMD

liitunud: 29.07.2003




sõnum 04.04.2008 14:15:39 vasta tsitaadiga

Sedasi siis...
sql:
  1. SELECT t1.parent FROM tabel AS t1 JOIN tabel AS t2 JOIN tabel AS t3 ON (t1.parent = t2.parent AND t2.parent = t3.parent) WHERE t1.id = '15' AND t2.id = '10' AND t3.id = '20' GROUP BY t1.parent


Aga lihtsam oleks vast nii..
sql:
  1. SELECT parent FROM tabel WHERE id IN (55, 15, 30) GROUP BY parent HAVING count(1) = 3;

_________________
From now on, the forum is owned by AMD.That means that you are NO LONGER allowed to talk about, or even mention *ntel.
Kommentaarid: 335 loe/lisa Kasutajad arvavad:  :: 145 :: 3 :: 12
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Rain01
HV kasutaja
Rain01

liitunud: 02.09.2005




sõnum 04.04.2008 15:39:34 vasta tsitaadiga

AMD kirjutas:
Sedasi siis...
sql:
  1. SELECT t1.parent FROM tabel AS t1 JOIN tabel AS t2 JOIN tabel AS t3 ON (t1.parent = t2.parent AND t2.parent = t3.parent) WHERE t1.id = '15' AND t2.id = '10' AND t3.id = '20' GROUP BY t1.parent


Aga lihtsam oleks vast nii..
sql:
  1. SELECT parent FROM tabel WHERE id IN (55, 15, 30) GROUP BY parent HAVING count(1) = 3;
SUUR SUUR TÄNU! Ma ei tea küll mis see having täpselt teeb aga ta teeb mida vaja :D

AMD tahad positiivest või negatiivset? :D
Kommentaarid: 13 loe/lisa Kasutajad arvavad:  :: 1 :: 1 :: 10
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
AMD
HV veteran
AMD

liitunud: 29.07.2003




sõnum 04.04.2008 21:27:57 vasta tsitaadiga

Raha tahan hoopis icon_razz.gif
_________________
From now on, the forum is owned by AMD.That means that you are NO LONGER allowed to talk about, or even mention *ntel.
Kommentaarid: 335 loe/lisa Kasutajad arvavad:  :: 145 :: 3 :: 12
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  mysql query
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.