Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  mysql päring 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
otsing:  
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 15.08.2009 12:31:54 mysql päring vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
AMD
HV veteran
AMD

liitunud: 29.07.2003




sõnum 15.08.2009 13:12:53 vasta tsitaadiga

Midagi sellist siis või?
sql:
  1. 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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 15.08.2009 16:13:02 vasta tsitaadiga

php:
  1. $query = "select ".DB_NODES.".node_id, ".DB_NODES.".order_id, ".DB_NODES.".level_id,
  2.                         ".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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
jnt
HV Guru
jnt

liitunud: 10.05.2005



Autoriseeritud ID-kaardiga

sõnum 15.08.2009 16:35:10 vasta tsitaadiga

SELECT tabel1.id, tabel1.name, tabel2.body FROM tabel1 LEFT JOIN tabel2 ON (tabel1.id=tabel2.id)

Midagi sinnakanti peaks vast p2ring olema. proovi. icon_wink.gif

_________________
Seisab keldris vana 386-486-Pentium1? Räägime! Ehk saan vanakesele uue elu anda. icon_wink.gif
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
vaata kasutaja infot saada privaatsõnum
Brigadir
HV vaatleja
Brigadir

liitunud: 21.05.2002




sõnum 15.08.2009 18:07:53 vasta tsitaadiga

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. icon_wink.gif


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
vaata kasutaja infot saada privaatsõnum
AMD
HV veteran
AMD

liitunud: 29.07.2003




sõnum 15.08.2009 20:03:45 vasta tsitaadiga

keevitaja kirjutas:
php:
  1. $query = "select ".DB_NODES.".node_id, ".DB_NODES.".order_id, ".DB_NODES.".level_id,
  2.                         ".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. icon_wink.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
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 31.05.2010 19:42:13 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Brigadir
HV vaatleja
Brigadir

liitunud: 21.05.2002




sõnum 31.05.2010 20:13:51 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 31.05.2010 21:09:56 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
mikk36
HV Guru
mikk36

liitunud: 21.02.2004




sõnum 31.05.2010 21:32:57 vasta tsitaadiga

keevitaja, no keera siis ümber see saadud query?
Kommentaarid: 85 loe/lisa Kasutajad arvavad:  :: 0 :: 2 :: 78
tagasi üles
vaata kasutaja infot saada privaatsõnum
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 31.05.2010 21:46:48 vasta tsitaadiga

kah õige icon_lol.gif
_________________
Hinnavaatlus ei ole koht arvamuse avaldamiseks!
Kommentaarid: 51 loe/lisa Kasutajad arvavad:  :: 1 :: 3 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 04.09.2010 12:13:46 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Renka
HV Guru
Renka

liitunud: 01.04.2002



Autoriseeritud ID-kaardiga

sõnum 04.09.2010 13:20:21 vasta tsitaadiga

sql:
  1. 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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
mikk36
HV Guru
mikk36

liitunud: 21.02.2004




sõnum 04.09.2010 13:21:30 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum
Renka
HV Guru
Renka

liitunud: 01.04.2002



Autoriseeritud ID-kaardiga

sõnum 04.09.2010 13:32:42 vasta tsitaadiga

Niimoodi siis?
sql:
  1. 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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 04.09.2010 13:41:57 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 04.09.2010 14:04:16 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
mikk36
HV Guru
mikk36

liitunud: 21.02.2004




sõnum 04.09.2010 14:18:17 vasta tsitaadiga

Renka, selleks peaksid ju kindlaks tegema et mis see kolmanda tingimuse id on.
Kommentaarid: 85 loe/lisa Kasutajad arvavad:  :: 0 :: 2 :: 78
tagasi üles
vaata kasutaja infot saada privaatsõnum
Timukas0
HV kasutaja
Timukas0

liitunud: 20.03.2007




sõnum 04.09.2010 16:13:40 vasta tsitaadiga

Midagi sellist?
sql:
  1. 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
vaata kasutaja infot saada privaatsõnum
Fukiku
Kreisi kasutaja
Fukiku

liitunud: 06.11.2003




sõnum 04.09.2010 16:17:40 vasta tsitaadiga

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? icon_smile.gif

_________________
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
vaata kasutaja infot saada privaatsõnum
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 04.09.2010 21:39:57 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Renka
HV Guru
Renka

liitunud: 01.04.2002



Autoriseeritud ID-kaardiga

sõnum 04.09.2010 21:48:20 vasta tsitaadiga

ära leiuta jalgratast.

Loe parem: http://dev.mysql.com/tech-resources/articles/hierarchical-data.html

_________________
There is no place like 127.0.0.1
Kommentaarid: 71 loe/lisa Kasutajad arvavad:  :: 2 :: 1 :: 61
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 04.09.2010 21:49:20 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Renka
HV Guru
Renka

liitunud: 01.04.2002



Autoriseeritud ID-kaardiga

sõnum 04.09.2010 21:50:32 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  mysql päring
[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.