Új hozzászólás Aktív témák
-
PowerBuldog
veterán
Sziasztok!
Van 2 táblám. Az ID mindkettőben a kulcs, így ahol az azonos ott ugyan arról az ügyfélről beszélünk.
Úgy szeretném össze olvasztani őket, hogy az ügyfél minden adata a 2 táblából látszódjon egy táblában.
Régen használtam már SQL-r, valami INNER JOIN utasításra emlékszem, de már nem tiszta mit mivel kell csinálni.
Tudna valaki segíteni?Eladó motyók: https://hardverapro.hu/aprok/hirdeto/powerbuldog/index.html
-
Ursache
senior tag
-
tm5
tag
válasz Ursache #3153 üzenetére
Hát inner join esetén csak azok a rekordok jönnek vissza amelyek mindkét táblában szerepelnek.
Szerintem inkább egy left outer join kellene ahol a baloldali tábla (a) olyan, hogy minden ügyfél benne van:SELECT *
FROM a
LEFT OUTER JOIN b ON (a.id = b.id)Ha pedig olyan a két tábla, hogy mindegyikben lehet olyan ügyfélrekord, ami nincs a másikban, akkor a LEFT helyére FULL-t kellene írni.
-
DopeBob
addikt
Sziasztok,
PL\SQL-ben, sima select lekérdezéssel meg lehet valahogy oldani hogy egy lekérdezés eredményénél minden sorból 4-et csináljon, mind a négyhez más statikus szöveget rendeljen? DB kapcsolat nincs, kliens programon keresztül lehet ennyit megtenni, és a másik program betöltőfájlját kellene így előállítani.
hl a lekérdezés ered ménye mondjuk egy mező 1, akkor nekem ez kellene
1; K10
1; K12
1; K13
1; K99MZ/X
-
bpx
őstag
válasz DopeBob #3157 üzenetére
Akkor viszont:
with st as
(
select 'K10' as text from dual union all
select 'K12' as text from dual union all
select 'K13' as text from dual union all
select 'K99' as text from dual
),
data as
(
select 1 as value from dual
)
select
data.value,
st.text
from
st,
data
order by
data.value,
st.text
;
VALUE TEXT
---------- ----
1 K10
1 K12
1 K13
1 K99 -
martonx
veterán
Sziasztok,
A probléma szemléltetésére csináltam egy SqlFiddle-t. Csináltam egy rekurzív select-et (ami valószínűleg nem is az igazi), ráadásul nekem nem is ilyen végeredmény kellene, de kiindulásnak talán jó.
Szóval a példában adottak országok, megyék, városok. A példából nekem valami ilyet kellene kihoznom:AreaId, AreaFlow
4, Canada > Saskatchewan > Saskatoon
6, United States > Florida > MiamiMit kellene a rekurzív selectemen módosítani, hogy ezt a kimenetet adja?
Én kérek elnézést!
-
martonx
veterán
Hopp, és közben meg is csináltam.
Ez lett a végső megoldás:
WITH AreasCTE AS
(
SELECT AreaID, AreaName, ParentAreaID,
cast(AreaName AS varchar(255)) AS AreaPath
FROM dbo.Area
WHERE ParentAreaID is null
UNION ALL
SELECT a.AreaID, a.AreaName, a.ParentAreaID,
cast(s.AreaPath + ' > ' + a.AreaName AS varchar(255)) as AreaPath
FROM Area a
INNER JOIN AreasCTE s ON a.ParentAreaID = s.AreaID
)
SELECT AreaID, AreaPath
FROM AreasCTE ac
ORDER BY 1Viszont a hülye SQL fiddle meghal rajta, miközben lokális SQL szerveren szépen működik, és ez a lényeg.
[ Szerkesztve ]
Én kérek elnézést!
-
MineFox54
őstag
Sziasztok!
Van egy ilyen lekérdezésem.
SELECT * FROM tankonyv WHERE evtol<='$osztaly' AND evig>='$osztaly' AND tantargy='$tantargy'Ha az evtol-nél az adatbázisban mondjuk 9 van, az evig-nél 12, a tantárgy változó értéke Matematika, és az osztály értéke 11, akkor nem találja meg a könyvet.
Miért? -
rum-cajsz
őstag
válasz MineFox54 #3165 üzenetére
Értelek, akkor viszont nem az adatbázisban van a hiba, mert ez nálam tökéletesen működik:
CREATE TABLE tankonyv (evtol NUMBER,evig NUMBER,tantargy VARCHAR2(10));
INSERT INTO tankonyv SELECT 9,12,'Matematika' FROM dual;
SELECT * FROM tankonyv WHERE evtol<='11' AND evig>='11' AND tantargy='Matematika';
DROP TABLE tankonyv PURGE;=Kilroy was here============================ooO=*(_)*=Ooo=======
-
bambano
titán
válasz MineFox54 #3169 üzenetére
Postgresql:
CREATE TABLE tankonyv (evtol integer,evig integer,tantargy text);
CREATE TABLE
INSERT INTO tankonyv SELECT 9,12,'Matematika' ;
tmp=> SELECT * FROM tankonyv WHERE evtol<='11' AND evig>='11' AND tantargy='Matematika';
evtol | evig | tantargy
-------+------+------------
9 | 12 | Matematika
(1 row)
tmp=> SELECT * FROM tankonyv WHERE evtol<=11 AND evig>=11 AND tantargy='Matematika';
evtol | evig | tantargy
-------+------+------------
9 | 12 | Matematika
(1 row)Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
-
bambano
titán
válasz MineFox54 #3173 üzenetére
mert ha az évtől és az évig varchar, akkor az évtől<='11' aposztrófosan szintaktikailag helyes.
de ha stringként hasonlítod össze a 9-et meg a 11-et, akkor mivel a 11 1-essel kezdődik, ezért az kisebb, mint a 9. ezért nem talált neked semmit. numerikusan meg a 9 a kisebb, mint ahogy te hitted.
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
bambano
titán
válasz fordfairlane #3175 üzenetére
de neki a tól-ig-ja nem év, hanem gimnáziumi osztály "évadjelző" vagy hogy mondjam.
tehát 1-12 közötti szám. azt akarta megtudni, hogy milyen könyveket adhat a tizenegyedik évfolyamra járó diákoknak matekból.Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
bambano
titán
válasz MineFox54 #3173 üzenetére
és akkor most már azt is tudjuk szerintem, hogy azért volt varcharként megadva, hogy a speciális osztályokat is tudják jelezni.
tehát mást ad a 11. osztálynak matekból és mást ad a 11c-nek, ami speciális matek osztály.
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
bambano
titán
válasz fordfairlane #3178 üzenetére
jaja, ezt a szót kerestem sokáig
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
-
MineFox54
őstag
Sziasztok!
Megint kérdésem lenne.
Van egy ilyen lekérdezésem.
SELECT raktszam,cim,szerzo,tantargy,ar FROM tankonyv un WHERE raktszam in (SELECT raktszam FROM csoportok WHERE osztaly = '$osztaly')
Ez így működik, de én ki szeretném írni a tankönyv adatai mellé a csoportok táblában lévő megjegyzés mező tartalmát is.
Ezt hogyan kéne csinálnom? -
DS39
nagyúr
válasz MineFox54 #3185 üzenetére
Szia!
select tk.raktszam, tk.cim, tk.szerzo, tk.tantargy, tk.ar, cs.megjegyzes, cs.osztaly
from tankonyv tk
join csoportok cs on cs.raktszam = tk.raktszam
where cs.osztaly = '$osztaly'off: tök jó, ez az új programkód formázó, tudom nem mostani újítás, de ez tényleg hasznos fejlesztés volt. Köszi PH! csapat
[ Szerkesztve ]
-
Petya25
addikt
Valakinek tippje az alábbi esetre MS-SQL-ben?
Adott cikk ára időnként változik és egy adott naptól érvényes a következő árváltozásig.
Na az eladáshoz kellene utólag hozzákeresnem az eladás napi érvényes árat.
Értelem szerűen egy cikkhez tetszőleges számú ár lehetséges (akár csak 1 is lehet) , de a megfelelőt kellene kitalálni.Két tábla, cikkek eladás és cikk árak.
eladás
cikk, elad_datum
alma, 2016.07.01
és
cikk árak
cikk, ar, erv_datumtol
alma, 100, 2015.12.01
alma, 110, 2016.02.01
alma, 120, 2016.06.01 --ez kellene
alma, 150, 2016.09.01Valami elad_datum-tól kisebb listán, csökkenőben top 1-en gondolkodom...
Antonio Coimbra de la Coronilla y Azevedo, bizony!
-
1eske
tag
Sziasztok!
Szeretném lekérdezni azokat az elemeket egy táblából ami a lekérdezés időpontjától számítva 5 mp-ig visszamenőleg lettek létrehozva.
A tábla így néz ki:
CREATE TABLE t1 (dt DATETIME,var1 VARCHAR2(50),var2 VARCHAR2(50))
Ezt az alábbi lekérdezéssel tenném meg:
SELECT dt, var1, var2 FROM t1 WHERE dt > DATEADD(second, -5, getdate())
A baj ezzel a lekérdezéssel, hogy minden rekordot kiad.
Kiírattam a dt értékét is, de jónak tűnik a formátuma: 2016-10-06 11:20:27.511
Mi lehet a baj?
[ Szerkesztve ]
-
sztanozs
veterán
Megpróbálhatod ezt is:
SELECT dt, var1, var2 FROM t1 WHERE DATEDIFF(second, GETDATE(), dt) >= -5
Ha ez is mindent viasszaad, akkor nem jók a a dt értékek az adatbázisban (jövőbeni idő/dátum van bennük).JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
-
1eske
tag
válasz sztanozs #3191 üzenetére
Ez is mindent visszaad.
Így rakom bele a DB-be a rekordokat:
PreparedStatement pstmt = conn.prepareStatement("INSERT INTO t1 (dt,val1,val2) VALUES (?,?,?)");
pstmt.setTimestamp(1, java.sql.Timestamp.valueOf(java.time.LocalDateTime.now()) );
pstmt.setString(2, v1);
pstmt.setString(3, v2 );
pstmt.executeUpdate();Lehet, hogy nem timestamp-pel kéne berakni?
-
sztanozs
veterán
Próbáld meg plusz mezőbe berakni a datediff-et is, és úgy látod, hogy mit számol:
SELECT dt, DATEDIFF(second, GETDATE(), dt) els, var1, var2 FROM t1 WHERE DATEDIFF(second, GETDATE(), dt) >= -5
Esetleg látatlanban még az lehet, hogy a feeding rendszer és az adatbázis nem azonos timezone-on van és ez okozhat problémát.
[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
sztanozs
veterán
Akkor rakj még bele egy GETDATE()-et inkább és látod a szerver szerinti időt:
SELECT dt, GETDATE() s_dt, var1, var2 FROM t1 WHERE DATEDIFF(second, GETDATE(), dt) >= -5
Amúgy én nem a kliens szerinti időt illeszteném be az inserttel, hanem simán a GETDATE()-et:
PreparedStatement pstmt = conn.prepareStatement("INSERT INTO t1 (dt,val1,val2) VALUES (GETDATE(),?,?)");
pstmt.setString(1, v1);
pstmt.setString(2, v2 );
pstmt.executeUpdate();És még némi a TimeZone-ról: http://stackoverflow.com/a/20086589
[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
sztanozs
veterán
Hogyhogy a getdate-tel kinullázza az órákat? Annak a pontos időt (date+time) kellene visszaadnia. Milyen SQL szerver ez?
[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
Új hozzászólás Aktív témák
- LEGO klub
- Dell notebook topic
- Crypto Trade
- Építő/felújító topik
- eBay-es kütyük kis pénzért
- Vicces képek
- Samsung Galaxy S23 Ultra - non plus ultra
- Debrecen és környéke adok-veszek-beszélgetek
- Kodi és kiegészítői magyar nyelvű online tartalmakhoz (Linux, Windows)
- Vodafone otthoni szolgáltatások (TV, internet, telefon)
- További aktív témák...
- EDIFIER R1700BTS hangfal pár makulátlan, új állapotban, 2 év hivatalos garanciával, alkalmi áron
- LG OLED55B23LA 2 Év GYÁRI GARANCIA
- Apple iPhone XR 128GB, Kártyafüggetlen, 1 Év Garanciával
- Gamer PC , i7 12700KF , RTX 3080 Ti , 64GB DDR5 , 960GB NVME , 1TB HDD
- Intel PC , i5 8500 , 1660 6GB , 32GB DDR4 , 512GB NVME , 500GB HDD
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: Ozeki Kft.
Város: Debrecen