Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
sõnum |
|
keevitaja
AM 10 aastat
liitunud: 05.11.2001
|
15.08.2009 12:31:54
mysql päring |
|
|
on kaks tabelit:
tabel 1
tabel1_id int,
name varchar
tabel 2
tabel1_id int
body text
kas ühe päringuga saaks nüüd välja võtta nii, et tekiks selline array
array('tabel1_id' => 1, 'name' => 'mingi nimi', 'body' => 'mingi sisu')
_________________ Hinnavaatlus ei ole koht arvamuse avaldamiseks! |
|
Kommentaarid: 51 loe/lisa |
Kasutajad arvavad: |
|
:: |
1 :: |
3 :: |
40 |
|
tagasi üles |
|
|
AMD
HV veteran
liitunud: 29.07.2003
|
15.08.2009 13:12:53
|
|
|
Midagi sellist siis või?
sql:
|
SELECT tabel1.tabel1_id, name, body FROM tabel1, tabel2 WHERE tabel1.tabel1_id = tabel2.tabel1_id;
|
_________________ 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 |
|
|
keevitaja
AM 10 aastat
liitunud: 05.11.2001
|
15.08.2009 16:13:02
|
|
|
php:
|
$query = "select ".DB_NODES.".node_id, ".DB_NODES.".order_id, ".DB_NODES.".level_id, ".DB_NODEBODY.".name from ".DB_NODES.", ".DB_NODEBODY." order by ".DB_NODES.".order_id";
|
miskipärast võtab see kolm korda igat rida välja...
_________________ Hinnavaatlus ei ole koht arvamuse avaldamiseks! |
|
Kommentaarid: 51 loe/lisa |
Kasutajad arvavad: |
|
:: |
1 :: |
3 :: |
40 |
|
tagasi üles |
|
|
jnt
HV Guru
liitunud: 10.05.2005
|
15.08.2009 16:35:10
|
|
|
SELECT tabel1.id, tabel1.name, tabel2.body FROM tabel1 LEFT JOIN tabel2 ON (tabel1.id=tabel2.id)
Midagi sinnakanti peaks vast p2ring olema. proovi.
_________________ Seisab keldris vana 386-486-Pentium1? Räägime! Ehk saan vanakesele uue elu anda.
Vaata siia, äkki müün midagi põnevat -> https://www.osta.ee/index.php?fuseaction=listing.seller&q[seller]=jnt |
|
Kommentaarid: 106 loe/lisa |
Kasutajad arvavad: |
|
:: |
2 :: |
0 :: |
99 |
|
tagasi üles |
|
|
Brigadir
HV vaatleja
liitunud: 21.05.2002
|
15.08.2009 18:07:53
|
|
|
jnt kirjutas: |
SELECT tabel1.id, tabel1.name, tabel2.body FROM tabel1 LEFT JOIN tabel2 ON (tabel1.id=tabel2.id)
Midagi sinnakanti peaks vast p2ring olema. proovi. |
LEFT JOINiga kuvatakse ka need esimese tabeli read millel puuduvad vasted teises tabelis. Arvatavasti on eeldus, et igal tabel1 real on vaste ka teises tabelis või vaste puudumisel vigaste või mittekorrektsete andmetega st. vist oleks mõistlikum kasutada lihtsalt (inner) JOINi ehk AMD näidet või "SELECT tabel1.id, tabel1.name, tabel2.body FROM tabel1 JOIN tabel2 ON (tabel1.id=tabel2.id)" varianti.
enivei, kunagi sain ise tarkust ammendatud tabelite joinimiste kohta siit --> http://www.gplivna.eu/papers/sql_join_types.htm
_________________ Vähem möla, pikem samm! |
|
Kommentaarid: 3 loe/lisa |
Kasutajad arvavad: |
|
:: |
0 :: |
0 :: |
3 |
|
tagasi üles |
|
|
AMD
HV veteran
liitunud: 29.07.2003
|
15.08.2009 20:03:45
|
|
|
keevitaja kirjutas: |
php:
|
$query = "select ".DB_NODES.".node_id, ".DB_NODES.".order_id, ".DB_NODES.".level_id, ".DB_NODEBODY.".name from ".DB_NODES.", ".DB_NODEBODY." order by ".DB_NODES.".order_id";
|
miskipärast võtab see kolm korda igat rida välja... |
Kasuta siis join'i või where'i ka ikka tabelite omavahel kokkupanemiseks.
_________________ 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 |
|
|
keevitaja
AM 10 aastat
liitunud: 05.11.2001
|
31.05.2010 19:42:13
|
|
|
kas oleks võimalik ühe päringuga kustudata. on kaks tabelit:
tabel_1:
id int.
name int
tabel_2:
id int,
tabel_1_id int |
tahaks kustutada tabelist 1 kõik kanded, mille id(tabel_1_id) ei ole olemas table_2 -s. kas on võimalik?
_________________ Hinnavaatlus ei ole koht arvamuse avaldamiseks! |
|
Kommentaarid: 51 loe/lisa |
Kasutajad arvavad: |
|
:: |
1 :: |
3 :: |
40 |
|
tagasi üles |
|
|
Brigadir
HV vaatleja
liitunud: 21.05.2002
|
31.05.2010 20:13:51
|
|
|
delete from tabel_1 where id not in (select tabel_1_id from tabel_2): |
_________________ Vähem möla, pikem samm! |
|
Kommentaarid: 3 loe/lisa |
Kasutajad arvavad: |
|
:: |
0 :: |
0 :: |
3 |
|
tagasi üles |
|
|
keevitaja
AM 10 aastat
liitunud: 05.11.2001
|
31.05.2010 21:09:56
|
|
|
krt, panin näitega puusse. oleks vaja just kustutada table_2 -st kõik kanded, kui tabel_1_id -l ei ole vastest tabel_1 -s (id)
_________________ Hinnavaatlus ei ole koht arvamuse avaldamiseks! |
|
Kommentaarid: 51 loe/lisa |
Kasutajad arvavad: |
|
:: |
1 :: |
3 :: |
40 |
|
tagasi üles |
|
|
mikk36
HV Guru
liitunud: 21.02.2004
|
31.05.2010 21:32:57
|
|
|
keevitaja, no keera siis ümber see saadud query?
|
|
Kommentaarid: 85 loe/lisa |
Kasutajad arvavad: |
|
:: |
0 :: |
2 :: |
78 |
|
tagasi üles |
|
|
keevitaja
AM 10 aastat
liitunud: 05.11.2001
|
31.05.2010 21:46:48
|
|
|
kah õige
_________________ Hinnavaatlus ei ole koht arvamuse avaldamiseks! |
|
Kommentaarid: 51 loe/lisa |
Kasutajad arvavad: |
|
:: |
1 :: |
3 :: |
40 |
|
tagasi üles |
|
|
keevitaja
AM 10 aastat
liitunud: 05.11.2001
|
04.09.2010 12:13:46
|
|
|
mul on tabel koos selliste andmetega:
id, level
1, 1
2, 2
3, 2
4, 3
5, 4
6, 4
7, 1
kas ma saaksin teha nüüd päringu, mis võtab välja read alates level 1 kuni level 4(id 1 - id 6) ennen seda blokki võib veel sarnaseid blokke olla. teada on alguse id
_________________ Hinnavaatlus ei ole koht arvamuse avaldamiseks! |
|
Kommentaarid: 51 loe/lisa |
Kasutajad arvavad: |
|
:: |
1 :: |
3 :: |
40 |
|
tagasi üles |
|
|
Renka
HV Guru
liitunud: 01.04.2002
|
04.09.2010 13:20:21
|
|
|
sql:
|
SELECT id FROM tabel WHERE level >= 1 AND level <= 4
|
_________________ There is no place like 127.0.0.1 |
|
Kommentaarid: 71 loe/lisa |
Kasutajad arvavad: |
|
:: |
2 :: |
1 :: |
61 |
|
tagasi üles |
|
|
mikk36
HV Guru
liitunud: 21.02.2004
|
04.09.2010 13:21:30
|
|
|
Renka, see valiks ju ka id 7'e sisse. Nagu aru saan, siis keevitaja soovib sellist tulemust saada, kus valik lõpeb kohas, kus level langeb.
|
|
Kommentaarid: 85 loe/lisa |
Kasutajad arvavad: |
|
:: |
0 :: |
2 :: |
78 |
|
tagasi üles |
|
|
Renka
HV Guru
liitunud: 01.04.2002
|
04.09.2010 13:32:42
|
|
|
Niimoodi siis?
sql:
|
SELECT id FROM tabel WHERE level >= 1 AND level <= 4 AND id >= 1 AND id <= 6
|
_________________ There is no place like 127.0.0.1 |
|
Kommentaarid: 71 loe/lisa |
Kasutajad arvavad: |
|
:: |
2 :: |
1 :: |
61 |
|
tagasi üles |
|
|
andrusny
Kreisi kasutaja
liitunud: 20.03.2006
|
04.09.2010 13:41:57
|
|
|
Kõige kahtlasem selle tingimuse juures on
tsitaat: |
ennen seda blokki võib veel sarnaseid blokke olla |
Peaks ju mingi kriteerium olema, millise ta neist sarnastest valib, viimase ?
_________________
|
|
Kommentaarid: 7 loe/lisa |
Kasutajad arvavad: |
|
:: |
0 :: |
0 :: |
7 |
|
tagasi üles |
|
|
keevitaja
AM 10 aastat
liitunud: 05.11.2001
|
04.09.2010 14:04:16
|
|
|
tegelikult seal on veel väli sequence mis neid ridasid väljavõtmisel reastada aitab. 1 - &. ehk siis selle esimise väljavõetava rea sequence on kah teada.
võimalus on algul teha päring, et leida järgmine level 1 rida, kuid tahaks nagu kohe õiged andmed välja võtta
_________________ Hinnavaatlus ei ole koht arvamuse avaldamiseks! |
|
Kommentaarid: 51 loe/lisa |
Kasutajad arvavad: |
|
:: |
1 :: |
3 :: |
40 |
|
tagasi üles |
|
|
mikk36
HV Guru
liitunud: 21.02.2004
|
04.09.2010 14:18:17
|
|
|
Renka, selleks peaksid ju kindlaks tegema et mis see kolmanda tingimuse id on.
|
|
Kommentaarid: 85 loe/lisa |
Kasutajad arvavad: |
|
:: |
0 :: |
2 :: |
78 |
|
tagasi üles |
|
|
Timukas0
HV kasutaja
liitunud: 20.03.2007
|
04.09.2010 16:13:40
|
|
|
Midagi sellist?
sql:
|
SELECT id FROM tabel WHERE level BETWEEN 1 AND 4 AND id < (SELECT id FROM tabel WHERE level = 1 LIMIT 1, 1)
|
|
|
Kommentaarid: 3 loe/lisa |
Kasutajad arvavad: |
|
:: |
0 :: |
0 :: |
3 |
|
tagasi üles |
|
|
Fukiku
Kreisi kasutaja
liitunud: 06.11.2003
|
04.09.2010 16:17:40
|
|
|
Eeldades, et see levelite teema on mingi menüüstruktuur näiteks, siis soovitaks kasutada klassikalist lähenemist, kus menüüpunktid seotakse oma kõrgemalt tasandilt pärineva vanemaga mingit laadi parent_id välja kaudu. Paraku ei ole võimalik ka sellist struktuuri ühe päringuga välja võtta, vaid tuleb rekursiivselt mitmeid päringuid järjest teha.
Ka praegusel kujul ühe päringuga sa seda kätte ei saa ja su struktuur läheb puhta katki, kui kuhugi vahele on mingit kirjet juurde vaja - suurendad kõigi hilisemate kirjete ID'd ühe võrra?
_________________ Foxic is just a simple fox
Enne kui sa küsid oma küsimuse - küsi seda vannipardilt! Rangelt soovitatav enne programmeerimise alafoorumisse uue teema tegemist. |
|
Kommentaarid: 2 loe/lisa |
Kasutajad arvavad: |
|
:: |
0 :: |
0 :: |
2 |
|
tagasi üles |
|
|
keevitaja
AM 10 aastat
liitunud: 05.11.2001
|
04.09.2010 21:39:57
|
|
|
tegu menüü struktuuriga jah, kus on väljad id, level, sequence. kui tahan midagi vahele panna siis teen sequence = sequence + 1. sama loogikaga ka kustutamine.
_________________ Hinnavaatlus ei ole koht arvamuse avaldamiseks!
viimati muutis keevitaja 04.09.2010 21:48:48, muudetud 2 korda |
|
Kommentaarid: 51 loe/lisa |
Kasutajad arvavad: |
|
:: |
1 :: |
3 :: |
40 |
|
tagasi üles |
|
|
Renka
HV Guru
liitunud: 01.04.2002
|
|
Kommentaarid: 71 loe/lisa |
Kasutajad arvavad: |
|
:: |
2 :: |
1 :: |
61 |
|
tagasi üles |
|
|
keevitaja
AM 10 aastat
liitunud: 05.11.2001
|
04.09.2010 21:49:20
|
|
|
see klassikaline rekursiivne lähenimine on siiski oluliselt keerukam kui ma tahan neid nodesid hakata liigutama ilma et nende all olevad kaasa tuleks.
_________________ Hinnavaatlus ei ole koht arvamuse avaldamiseks! |
|
Kommentaarid: 51 loe/lisa |
Kasutajad arvavad: |
|
:: |
1 :: |
3 :: |
40 |
|
tagasi üles |
|
|
Renka
HV Guru
liitunud: 01.04.2002
|
04.09.2010 21:50:32
|
|
|
Ei ole ta midagi. Uuri lähemalt
_________________ There is no place like 127.0.0.1 |
|
Kommentaarid: 71 loe/lisa |
Kasutajad arvavad: |
|
:: |
2 :: |
1 :: |
61 |
|
tagasi üles |
|
|
|