Hirdetés

2024. május 1., szerda

Gyorskeresés

Útvonal

Fórumok  »  Szoftverfejlesztés  »  SQL kérdések (kiemelt téma)

Hozzászólások

(#1201) Jester01 válasza WolfLenny (#1199) üzenetére


Jester01
veterán

Az se mindegy, hogy soronként PHP-ből vagy a mysql erre kitalált LOAD DATA INFILE parancsával csinálod.

Jester

(#1202) lazlora


lazlora
tag

Sziasztok,

Nem tud valaki egy gyakorló szervert ahol selectet lehet gyakorolni?

Üdv :R :R

"A lot of times, people don't know what they want until you show it to them." S.J.

(#1203) Sk8erPeter válasza lazlora (#1202) üzenetére


Sk8erPeter
nagyúr

"ahol selectet lehet gyakorolni?"
Hogy mi van? :D

Rakj fel magadnak egyet például a kis gépecskédre... :N

Sk8erPeter

(#1204) bpx válasza lazlora (#1202) üzenetére


bpx
őstag

felraksz saját gépre valami kisebb sql szervert (mysql, postges), és máris gyakorolhatsz

(#1205) lazlora válasza bpx (#1204) üzenetére


lazlora
tag

Köszönöm válaszod! Remélem működik localhostban is.

"A lot of times, people don't know what they want until you show it to them." S.J.

(#1206) lakisoft válasza lazlora (#1205) üzenetére


lakisoft
veterán

Működik, igen.

(#1207) varsam


varsam
őstag

üdv

egyszerű kérdésem lenne. PLSQL-lel szeretnék dátumra szűrni.
A dátum 2003.11.26. 10:28:14 ilyen formátumban van. Hogy kellene egy bizonyos dátumra szűrnöm?

köszi

(#1208) Jester01 válasza varsam (#1207) üzenetére


Jester01
veterán

Például trunc segítségével lecsapod az időt.
Alkalmasint stringként is szétvághatod.
Vagy akár csinálhatod like operátorral is.

[ Szerkesztve ]

Jester

(#1209) bpx válasza varsam (#1207) üzenetére


bpx
őstag

semmi jelentősége nincs, hogy a dátum milyen formátumban van ábrázolva, a dátum a tárolása a háttérben máshogy történik, szűrni úgy lehet, hogy egy másik dátumhoz hasonlítod:

SELECT * FROM tabla WHERE datum = TO_DATE('YYYY-MM-DD HH24:MI:SS', '2012-06-27 22:52:12');

ha a dátum karaktersorozatként van tárolva, az már régen rossz, és akkor kell string műveletekkel foglalkozni

illetve ebben semmi PL/SQL nincs, szóval érdekelne, milyen az a PL/SQL-es szűrés/és hogy mire gondoltál

(#1210) Sk8erPeter válasza bpx (#1209) üzenetére


Sk8erPeter
nagyúr

Azt írja, a dátum így szerepel: "2003.11.26. 10:28:14"
Szerintem az aláhúzott rész a para, tehát hogy a 26-át jelző nap után van egy pont, szóval úgy tűnik, karaktersorozatként van tárolva (tényleg elég gázos).

Sk8erPeter

(#1211) bpx válasza Sk8erPeter (#1210) üzenetére


bpx
őstag

ez hogy ott pont van, semmit nem jelent :)

SQL> alter session set nls_date_format='YYYY.MM.DD. HH24:MI:SS';

Session altered.

SQL> select sysdate from dual;

SYSDATE
--------------------
2012.06.28. 12:03:06

(#1212) rum-cajsz válasza lazlora (#1202) üzenetére


rum-cajsz
őstag

Itt gyakorolhatsz többféle adatbázisban is alapdolgokat: http://sqlzoo.net/

=Kilroy was here============================ooO=*(_)*=Ooo=======

(#1213) Sk8erPeter válasza bpx (#1211) üzenetére


Sk8erPeter
nagyúr

Ja oké, kösz, ezt nem ismertem. :D
Szerk.: habár jobb akkor is a "default" formátumban tárolni, nem? Úgy könnyebben migrálható. Különben mindig oda kell írni ezt az ALTER-t, amit írtál.

[ Szerkesztve ]

Sk8erPeter

(#1214) rum-cajsz válasza Sk8erPeter (#1213) üzenetére


rum-cajsz
őstag

A dátumformátumot beállíthatod a kliens paraméterei között (mármint az oprendszerben), nem kell állandóan kiadni a lenti parancsot.

[ Szerkesztve ]

=Kilroy was here============================ooO=*(_)*=Ooo=======

(#1215) bpx válasza Sk8erPeter (#1213) üzenetére


bpx
őstag

mint azt tegnap is írtam az ábrázolás és a tárolás formátuma teljesen független, te csak az megjelenítés formátumát tudod manipulálni, a dátum típusnak megvan a saját belső struktúrája

simán lehet csak bizonyos részeket megjeleníteni, vagy akár tök hülyeséget is (ami persze még érelmezhető) beállítani format stringnek (és ugye most Oracle-ről beszélünk)

SQL> select sysdate from dual;

SYSDATE
---------
28-JUN-12

SQL> alter session set nls_date_format='_#!+YYYYMMDDHH24MISS';

Session altered.

SQL> select sysdate from dual;

SYSDATE
------------------
_#!+20120628130131

SQL> alter session set nls_date_format='SS...:_"/=%!"YYYY!"%/%"HH24"%!"MI_DD_:MM';

Session altered.

SQL> select sysdate from dual;

SYSDATE
--------------------------------
07...:_/=%!2012!%/%13%!02_28_:06

SQL> alter session set nls_date_format='YYYY.MM.DD. HH24:MI:SS';

Session altered.

SQL> select sysdate from dual;

SYSDATE
--------------------
2012.06.28. 13:02:59

[ Szerkesztve ]

(#1216) varsam válasza bpx (#1209) üzenetére


varsam
őstag

Köszi mindenkinek!

A probléma annyi volt, hogy én pontokkal elválasztva akartam szűrni dátumra, amire kiírta h nem megfelelő a formátum, de átírva - jelre már oké is volt, illetve elé biggyesztettem egy to_date -et

(#1217) Sk8erPeter válasza bpx (#1215) üzenetére


Sk8erPeter
nagyúr

Na, a kérdés maga annyira megzavart, hogy már én is félrebeszéltem, meg pontatlanul is írtam, bocsi. A kérdező azt írta, hogy "A dátum 2003.11.26. 10:28:14 ilyen formátumban van.", én ebből úgy értelmeztem, hogy valamilyen oknál fogva string típusként van TÁROLVA az adatbázisban (most szándékosan írtam tárolást!! Mindegy, hogy varchar vagy egyéb ilyen jellegű típusról van szó, és NEM a dátumformátumok valamelyikéről, aminek nyilván megvan a maga tárolási módja, de attól még valamelyik tényleges dátumformátumról van szó), ezért kénytelen vagdosni, stb., de akkor valószínű félreértettem az eredeti felvetést.
Utána már azt is félreértettem, amit Te írtál, pedig így másodszor elolvasva elég világos, hogy itt csak dátum-megjelenítési formátumot változtatsz, attól még nem tárolod másik formában.
Akkor most megpróbálom értelmesen megfogalmazni: arra gondoltam, hogy még a megjelenítési formátumot sem biztos, hogy szerencsés, ha az ember változtatja, mert ha mondjuk egy alkalmazást megír (hogy most az asztali vagy webes, tök mindegy), ami az adatbázistól bizonyos formátumban (megjelenítési formátumban) vár adatokat, és tök más formában kapja meg, mint egy másik szerveren, akkor abból adott esetben probléma lehet - mondjuk a probléma kimerül annyiban, hogy át kell állítani a formátumot úgy, ahogy mutattad, de nem biztos, hogy azonnal leesik, mi is a gond.

[ Szerkesztve ]

Sk8erPeter

(#1218) lakisoft


lakisoft
veterán

MSSQL 2008-al kaptatok már ilyen hibaüzenetet:
OLE DB provider "Microsoft.Jet.OLEDB.4.0" for linked server "(null)" returned message "A következő elérési út érvénytelen: 'U:\xxx.mdb'. Ellenőrizze, hogy helyesen adta-e meg az elérési utat, és hogy kapcsolódott-e a fájlt tartalmazó kiszolgálóra.".
Msg 7303, Level 16, State 1, Line 1
Cannot initialize the data source object of OLE DB provider "Microsoft.Jet.OLEDB.4.0" for linked server "(null)".

Az U hálózati meghajtó ugye. És nem tudja megnyitni az adatbázis fájlt.
Mi ilyenkor a teendő?

(#1219) lakisoft válasza lakisoft (#1218) üzenetére


lakisoft
veterán

Elvileg itt a network DTS-sel meg lehet oldani a dologot:

Use this procedure to enable network DTC access.

You can use this procedure to enable network DTC access on Windows Vista® or Windows Server® 2008. This procedure should be followed to allow remote computers to be enlisted in Microsoft Distributed Transaction Coordinator (MSDTC) transactions over the network.

Membership in the local Administrators group, or equivalent, is the minimum required to complete this procedure.

To enable network DTC access and configure Windows Firewall on Windows Vista or Windows Server 2008
Click Start, click Run, type dcomcnfg and then click OK to open Component Services.

In the console tree, click to expand Component Services, click to expand Computers, click to expand My Computer, click to expand Distributed Transaction Coordinator and then click Local DTC.

Right click Local DTC and click Properties to display the Local DTC Properties dialog box.

Click the Security tab.

Set the following options on the Security tab of the Local DTC Properties dialog box and click OK.

Ezt követően ezt a hibaüzit kapom:
Msg 233, Level 20, State 0, Line 0
Átviteli szintű hiba történt a kérés kiszolgálóra történő küldésekor. (provider: Megosztott memória szolgáltatója, error: 0 - Nincs folyamat a pipe másik végén.)
Megoldása elvileg egy hotfix:
[link]

Remélem kijavítja mert igen kemény szívás lesz ha nem tudod hálózati meghajtóról importálni.

(#1220) SektorFlop


SektorFlop
aktív tag

Lenne egy olyan problémám, hogy van 2 táblám.

Fizetes:
_id
FizOsszeg
FizEgyenleg
FizHonap
FizEv

Terheles:
_id
TerOsszeg
TerNev
TerAllapot
TerDatum
FizID -> ez lenne az összekötő!

Szereznék egy Update-et végezni és ha lehet csak sql-en belül szeretném megoldani. Elképzelésem szerint volt egy ilyen próbálkozásom, de sikertelenül...

db.execSQL("UPDATE "+TerhelesTable+" SET "+TerhelesHonap+" = IN (SELECT "+FizetesID+" FROM "+FizetesTable+" ORDER BY " +FizetesID+ " DESC LIMIT 1)");

"Amikor már azt hittem kint vagyok, ezek mindig visszarántottak..."

(#1221) lakisoft válasza SektorFlop (#1220) üzenetére


lakisoft
veterán

Neked olyan kell, hogy "join in update" az nem teljesen így kell megoldani, bár a logikája hasonló. Pont ma csináltam ilyet. Utánanézek.

[ Szerkesztve ]

(#1222) SektorFlop válasza lakisoft (#1221) üzenetére


SektorFlop
aktív tag

köszi a gyors választ, én is utána olvasok.

"Amikor már azt hittem kint vagyok, ezek mindig visszarántottak..."

(#1223) lakisoft válasza SektorFlop (#1222) üzenetére


lakisoft
veterán

Igazán nincs mit. Milyen adatbázis kezelőben akarod ezt megcsinálni?

(#1224) SektorFlop válasza lakisoft (#1223) üzenetére


SektorFlop
aktív tag

SQLite, Android Java-ba kell.

"Amikor már azt hittem kint vagyok, ezek mindig visszarántottak..."

(#1225) martonx válasza SektorFlop (#1224) üzenetére


martonx
veterán

join-os update-nek annyira más minden SQL nyelvjárásban a szintaktikája, hogy ajánlom a guglit. MSSQL-ben kapásból megmondtam volna.
Mondjuk ilyen triviális kérdésnél egyébként is elsőre guglizni illene...

Én kérek elnézést!

(#1226) lakisoft válasza martonx (#1225) üzenetére


lakisoft
veterán

Mond meg kapásból hátha van benne új számomra :)

(#1227) martonx válasza lakisoft (#1226) üzenetére


martonx
veterán

update table1
set valami = t2.valami
from table1 t1
join table2 t2 on t1.id = t2.id

volt benne új?

Én kérek elnézést!

(#1228) lakisoft válasza martonx (#1227) üzenetére


lakisoft
veterán

nem de azért az életben nem ilyen egyszerű példák vannak :D.

(#1229) rum-cajsz


rum-cajsz
őstag

Hihetetlenek vagytok, hogy ebből a lent megadott selectből ki tudtátok találni, hogy mit akar kérdezni az illető.... :C
Nekem nem ment, pedig elolvastam kétszer is, hátha figyelmetlen voltam.

[ Szerkesztve ]

=Kilroy was here============================ooO=*(_)*=Ooo=======

(#1230) lakisoft válasza rum-cajsz (#1229) üzenetére


lakisoft
veterán

Összepakol egy stringet és le akarja futtatni. Ennyi sikerült belőle megérteni :DDD.

(#1231) martonx válasza lakisoft (#1228) üzenetére


martonx
veterán

A példák mindig egyszerűek. A megvalósítás, meg a gyakorlat már bonyolultabb tud lenni.
De ez az életben is ilyen egyszerű, mint a példámban.

Én kérek elnézést!

(#1232) Fecogame


Fecogame
veterán

Ha adott két fórummotor és egyetlen adatbázist vagyok kénytelen használni, de két userrel, az működhet? Ha igen, akkor hogyan tudom a jelenlegi kettőt egybeolvasztani?

:R

Lassú a mobilinterneted? 4G/LTE antennák, közvetlenül raktárról ---> http://bit.ly/LTE_Antennak

(#1233) rum-cajsz válasza Fecogame (#1232) üzenetére


rum-cajsz
őstag

elméletileg máködhet, ha a fórumokat ugyanarra az adatbázisra állítod be, de gyakorlatilag ennek a kivitelezése szerintem nagyon sok hibát/problémát fel fog vetni.
Főleg ha a két fórum beállításai nem 100%-osan ugyanazok lesznek. Mondjuk más témákat telepítesz egyikre, mint a másikra, stb....

[ Szerkesztve ]

=Kilroy was here============================ooO=*(_)*=Ooo=======

(#1234) Fecogame válasza rum-cajsz (#1233) üzenetére


Fecogame
veterán

A fórummotor ugyanaz, de a beállítások már nem. És ha más-más előtaggal működik a két fórum, akkor sem működhet ez a felállás?

Lassú a mobilinterneted? 4G/LTE antennák, közvetlenül raktárról ---> http://bit.ly/LTE_Antennak

(#1235) martonx válasza Fecogame (#1234) üzenetére


martonx
veterán

úgy működhet.
Másrészt nem értem, hogy ha valahol kt különböző domaint tudsz hostingolni, akkor miért ne tudnál domainenként létrehozni egy-egy db-t? Sőt biztosan lehetséges, maximum nem is gondoltál rá.

Én kérek elnézést!

(#1236) Fecogame válasza martonx (#1235) üzenetére


Fecogame
veterán

Szolgálatóilag korlátozva van. És az egyik fórum a fődomainen van, a másik pedig aldomain :)

Lassú a mobilinterneted? 4G/LTE antennák, közvetlenül raktárról ---> http://bit.ly/LTE_Antennak

(#1237) rum-cajsz válasza Fecogame (#1234) üzenetére


rum-cajsz
őstag

Ha más az előtag, akkor tökéletes az elgondolásod.

=Kilroy was here============================ooO=*(_)*=Ooo=======

(#1238) Fecogame válasza rum-cajsz (#1237) üzenetére


Fecogame
veterán

Oké :) Akkor már csak az a kérdés, hogy a két ( már meglévő ) adatbázist hogyan tudom egybeolvasztani?

Lassú a mobilinterneted? 4G/LTE antennák, közvetlenül raktárról ---> http://bit.ly/LTE_Antennak

(#1239) Sk8erPeter válasza SektorFlop (#1220) üzenetére


Sk8erPeter
nagyúr

Más, mert a többiek az eredeti kérdést már megoldották: miért nem használsz prepared statementeket? Ez a query-konkatenálás nagyon csúnya és kerülendő megoldás.

(#1238) Fecogame :
Mit értesz azalatt, hogy "egybeolvasztani"? :F Magyarul egy adatbázisba rakni? Mi vele a problémád?
Amúgy azonos tárhely alatt akarsz két fórummotort használni, vagy két különbözőn?
Ha az első, akkor annak mi értelme? :D Ha a második változat, akkor viszont meg kell oldani a külső hozzáférést is az adatbázishoz.

[ Szerkesztve ]

Sk8erPeter

(#1240) Fecogame válasza Sk8erPeter (#1239) üzenetére


Fecogame
veterán

Adott két fórum egy tárhelyen, és ezekhez 2 külön adatbázis tartozik ( jelenleg ).

Ezt a kettő adatbázist kell egybe összeraknom, mert az új tárhelyen csak egy használatára van lehetőség.

Lassú a mobilinterneted? 4G/LTE antennák, közvetlenül raktárról ---> http://bit.ly/LTE_Antennak

(#1241) rum-cajsz válasza Fecogame (#1238) üzenetére


rum-cajsz
őstag

Hát, ennek a megoldása függ attól, hogy milyen fórummotort használsz. Mert nem elég átnevezned a táblákat, hanem az összes config táblában és config fájlban is át kell állítanod az új prefixet.

Én azt próbálnám meg, hogy csinálok egy vadonatúj telepítést az új prefixekkel, és utána betölteném az új táblákba a régiek tartalmát. Ez után leellenőrizném az összes táblát, hogy van-e benne olyan config sor, amiben szerepel táblanév, mert ha igen, akkor azt is javítanám.
Csak ez után indítanám el a fórumot, és kipróbálnám, hogy jól működik-e. Ha igen, akkor mehet élesben, ha nem, akkor keresni kell valami más megoldást.

A másik lehetőség, hogy a fórum motor támogatja a táblák átnevezését, akkor könnyebb dolgod van.

=Kilroy was here============================ooO=*(_)*=Ooo=======

(#1242) Fecogame válasza rum-cajsz (#1241) üzenetére


Fecogame
veterán

SMF a fórummotor :)

Update: Átneveztem benne a prefixet, erre kiírja, hogy a settings tábla nem létezik. Backupot visszaállítottam, úgy is ugyanaz az eredmény...

Lassú a mobilinterneted? 4G/LTE antennák, közvetlenül raktárról ---> http://bit.ly/LTE_Antennak

(#1243) SektorFlop válasza Sk8erPeter (#1239) üzenetére


SektorFlop
aktív tag

tényleg célszerűbb lenne, meg se fordul a fejemben ez a megoldás.

"Amikor már azt hittem kint vagyok, ezek mindig visszarántottak..."

(#1244) wolandino


wolandino
tag

Sziasztok!

Van egy MS SQL adatbázisom, amit linux környezetben szeretnék használni és ugyancsak arról a linux szerverről elérni, amin nem mellesleg PHP fut.
Windows-os környezetben ugyanezt pofonegyszerűen elértem egy ilyen kóddal:

$connection = odbc_connect("Driver={Microsoft Access Driver (*.mdb)};DBQ=". realpath("./teszt.mdb").";", "ADODB.Connection", "");

de linux alatt sehogy sem akar összejönni, pedig már végignyálaztam a netet vagy kétszer ezügyben:(

Ha tudna valaki segíteni, akkor nagyon hálás lennék.

Köszönettel,
W.

(#1245) martonx válasza wolandino (#1244) üzenetére


martonx
veterán

Te kevered a szerzont a fazonnal. MS SQL-ről beszélsz, mikor a connection stringet MS Access-re mutat. :DD
Ráadásul mindezt Linuxon??? :))
Nem fog menni. Megoldási lehetőségek:
1. Miért ragaszkodsz a Linux-hoz, ha már MS alapú az adatbázisod? Futtasd windows-on a PHP-t.
2. Elfelejted az mdb-det, és használsz helyette valami más SQL-t, mondjuk sqlite, mysql, postgresql. Ezek mind futnak linux-on is.

Én kérek elnézést!

(#1246) wolandino válasza martonx (#1245) üzenetére


wolandino
tag

Igen, ez egy access adatbázis, de MS ez is.
A neten írnak rá megoldást, de az nem műkszik nekem.
Ha rajtam múlna nem is használnám, de van egy eszközöm, ami ilyet állít elő, és van egy szerverem, ami meg ubuntus környezetben fut,
Ezek konstansok. Max annyit tudok tenni, hogy megpróbálom a wiondowsos gépen elérni az Adatbázist linux alól, de az meg már mind1.

(#1247) martonx válasza wolandino (#1246) üzenetére


martonx
veterán

Nem ismerem a lehetőségeidet, csak jeleztem, hogy amit szeretnél nem fog menni. Mindegy, hogy neten mit találtál, amíg az MS nem írja meg az Access ODBC-t linux alá, addig nem fog működni amit szeretnél. Márpedig az MS soha nem fogja az Access-t linux alá megírni.
És az MS Access akkor sem egyenlő MS SQL-el, ez olyan mintha egy Skoda Fabia-ra meg egy Porsche-ra mondanád, hogy de mindkettőt a VW cég gyártja.

Én kérek elnézést!

(#1248) Lortech válasza wolandino (#1244) üzenetére


Lortech
addikt

Ha elég csak kinyerni az adatokat belőle, és nem riadsz vissza egy kis barkácsolástól, akkor megpróbálhatod ezt: [link]

Egyébként csak fizetős driverekről tudok.

[ Szerkesztve ]

Thank you to god for making me an atheist

(#1249) wolandino válasza martonx (#1247) üzenetére


wolandino
tag

Nem fog működni?:)
Akkor nézd meg ezt, mert ezzel végre működik a dolog:

http://www.lorenzoingrilli.it/database-access-mdb-da-linux-via-odbc
:C
Már csak a karakterkódolással kapcsolatos gondokat kell megoldanom :(

(#1250) wolandino válasza Lortech (#1248) üzenetére


wolandino
tag

köszi, meg fogom nézni ezt is :)

Útvonal

Fórumok  »  Szoftverfejlesztés  »  SQL kérdések (kiemelt téma)
Copyright © 2000-2024 PROHARDVER Informatikai Kft.