Új hozzászólás Aktív témák
-
DS39
nagyúr
válasz dellfanboy #1795 üzenetére
ez hogy SQL kérdés?
milyen programban kell a jogosultság egy táblához? MS SQL Server, Oracle DB?
ha nem adtak jogosultságot, akkor nem is kell az adott táblával dolgozzál, nem?[ Szerkesztve ]
-
DS39
nagyúr
válasz martonx #1849 üzenetére
teljesen felesleges újra feltalálni a spanyol viaszt. az SQL Server Business Intelligence része egy igen professzionális riportoló eszközt (Reporting Services) tartalmaz.
remek dinamikus (paraméter szerinti) táblázatok, és diagramok készíthetők vele [link]
az email-ben kiküldés kicsit macerás, de ahogy alább linkeltem megoldható.
[ Szerkesztve ]
-
DS39
nagyúr
válasz bbTamas77 #1863 üzenetére
dehogy nincs, Transact-SQL-ben a DATEDIFF fgv. ilyen. de az egy adott formátumban adja meg pl nap, vagy perc. teljes dátumba megadni nincs értelme, mert a hónapok nem azonos hosszúak, az évek sem.
hogy értsd: pl megadsz két dátumot, kijönne hogy különbség egy év, két hónap, 10 nap ... az a két hónap most hány nap is? tehát nem kapnál pontos értéket.
[ Szerkesztve ]
-
DS39
nagyúr
üdv!
szeretnék egy olyan lekérdezést írni, amivel olyan listát kapok, mint itt PH-n a topikok listája, tehát hogy a bennük található utolsó hozzászólás dátuma szerint legyen rendezve.
ebből indultam ki:
SELECT t.id, t.topic_name, p.send_date
FROM topics AS t, posts AS p
WHERE t.id=p.topic_id
ORDER BY p.send_date DESC
LIMIT 0, 10ez így okés, viszont értelemszerűen minden topik többször szerepel, mert egy azon topikban lehet több friss hsz ugye. ennek kiküszöbölésére két dolgot próbáltam:
1: SELECT DISTINCT t.id, ...
2: ... GROUP BY t.id ...
a többi kódrészlet maradt.
az eredmény az lett hogy most már valóban csak egyszer szerepel minden topik a listában, viszont nem az eredeti lekérdezés szerinti sorrendben, hiába a DESC, minden topic ID-hoz fogta és első első találatot lehozza (ami a legelső hsz), majd ezeket rendezi csökkenőben.
gondoltam hogy belső select-ezni kellene esetleg, de nem jöttem rá a megoldásra. tudnátok ebben segíteni? köszi előre is.
-
DS39
nagyúr
válasz sityupityka #2798 üzenetére
engem érdekelne milyen számokat fognak kihúzni szombaton (5-ös lottó)
-
DS39
nagyúr
MS SQL környezetben szeretnék egy olyan lekérdezést csinálni, ahol a select-ben van egy dinamikus változó.
select oszlop1, oszlop2, (select id from ..) - 1
from ...A belső select mindig egy adott id-t, számértéket ad vissza, és az 1 helyett szeretnék egy @i változót soronként növelni, de nem sikerül megoldani.
@i++ nem működik
@i = @i + 1 sem jó.van rá megoldás?
[ Szerkesztve ]
-
DS39
nagyúr
válasz Petya25 #3041 üzenetére
Először próbálkoztam ezzel, de akkor a belső select-ben az id-ből próbáltam levonni, ahelyett hogy kívül tenném ezt. Pedig így működik.
és már a belső select-et is kiküszöböltem:
declare @i int = (select id from ...)
select oszlop1, oszlop2, @i - ROW_NUMBER() over(order by oszlop1)
from ...Köszönöm a segítséget.
-
DS39
nagyúr
válasz sztanozs #3043 üzenetére
nem tárolt eljárás, csak egy lekérdezés.
de az alábbi megoldás végül is tökéletes nekem.
az amit írsz nem jó (vagy én értem félre)
ha az alábbi kódrészlethez hozzáteszem ezt:
declare @j int = @i - 1és beteszem egy plusz oszlopba a @j-t ,akkor annak minden sorban fix marad az értéke, nem végzi el megjelenített soronként a műveletet.
-
DS39
nagyúr
válasz sztanozs #3052 üzenetére
Szerintem túl gondolkodjátok az eredeti kérdésemet
Egyik adattáblából kinyert adatot, felhasználok egy másik adattáblából történő lekérdezéshez.az egyetlen bemenő paramétert az SSMS-ben írom bele a scriptbe futtatás előtt.
nem egy állandóan futó valamiről van szó, hogy kellene hozzá program. -
DS39
nagyúr
válasz DavidPetson #3065 üzenetére
hát ha nem adsz meg az SQL-nek, egy WHERE feltételt, honnan kéne tudnia, hogy te kinek a nevére vagy kíváncsi?
egy user_id-t át kellene adjál, amit amúgy a bejelentkezési session-ben el kellene tároljál, hogy tudd ki van épp bejelentkezve.
[ Szerkesztve ]
-
DS39
nagyúr
válasz DavidPetson #3067 üzenetére
a lekérdezés egy hibát dob, de azt így php-n keresztül nem látod, futtasd le a kívánt lekérdezést a mysql-ben, és meglátod mi a gond, miért ad vissza boolean-t, a várt adatok helyett.
egyébként a username egy szöveges változó, és te a php bemenő paramétert csak így simán betolod neki. viszont az sql-ben ezt aposztrófok közé kéne tenni, akkor lesz sikeres a lekérdezés.
tehát nem username = kismarcsi mert most ezt kapja a mysql-ed, hanem username = 'kismarcsi'
[ Szerkesztve ]
-
DS39
nagyúr
xml-ből szeretnék értéket lekérdezni sql-lel.
<data>
<answer id="1">Válasz1</answer>
<answer id="2">Válasz2</answer>
<answer id="3">Válasz3</answer>
<answer id="4">Válasz4</answer>
</data>úgy szedném ki a választ, hogy:
xml.value('(/data/answer[@id="3"])[1]', 'varchar(max)')
ez mind tök jó, de hogy lehet ezt dinamizálni?
tehát hogy egy másik helyről lekérdezem, hogy xy melyiket választotta, annak az értéke 2, és ezt a 2-est, hogy illesztem be fenti value függvénybe? mert string összefűzéssel nem engedivagy esetleg lehet valahogy hivatkozni arra egy where feltételben, hogy az @id mivel egyenlő?
[ Szerkesztve ]
-
DS39
nagyúr
válasz martonx #3079 üzenetére
köszönöm a válaszodat, bár igazából ezzel most nem tudom mit kezdjek, ebben egy szó sincs xml feldolgozásról.
van egy lekérdezés egy táblából ahol az xml nevű oszlop értéke az alábbi xml részlet.
ebből értéket úgy szedek ki, hogy:
select xml.value('(/data/answer[@id="3"])[1]', 'varchar(max)') from table_name
de ez így fixen mindig minden sor esetében a 3-as id-s választ hozza le, nekem pedig az kellene, hogy a 3-as helyére dinamikusan tudjak egy számot bevinni.
mert ha ezt a kódot csak felbontom úgy, hogy :
xml.value('(/data/answer[@id="'+'3'+'"])[1]', 'varchar(max)')akkor ezt az választ kapom az sql szervertől:
The argument 1 of the XML data type method "value" must be a string literal.[ Szerkesztve ]
-
DS39
nagyúr
válasz Thrawnad #3115 üzenetére
Szia!
Én így csinálnám:
select top 3 *
from tablanev
where (..egyéb feltételek..)
order by datum descközben eszembe jutott mysql-ben nincs top 3, akkor limit 3 a végére, ahogy a kolléga írta.
lényege az lett volna, hogy felesleges a belső select, ha a legutolsó (vagy a 3 utolsó) bejelentkezés adatait szeretnéd lekérni.[ Szerkesztve ]
-
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 ]
-
DS39
nagyúr
válasz kezdosql #3222 üzenetére
hát ezt kétféleképp is meg lehet oldani. egyik sem bonyolult.
A) két tábla, felhasználók és pozíciók, és csinálsz egy kapcsolótáblát amiben összekötöd, őket, ebben a táblában értelemszerűen lehetne többször ugyanaz a személy, más-más pozícióban.
B) megoldás: felhasználók táblát kibővíted plusz oszlopokkal, amik a pozíciók nevei, és vagy igaz vagy nem az adott emberre az a tulajdonság.
az amit jelenleg csináltál nem igazán járható út, főleg mivel felületet is kell hogy csinálj mindehhez, ahol nyilván látni szeretnék majd az összes ember adatait, amit ha 8 táblában vannak szétszórva, eléggé macerás lesz majd lekérdezést írni, meg adatokat módosítani a felületről.
-
DS39
nagyúr
válasz kezdosql #3224 üzenetére
A, leirnad, hogyan nez ki egy kapcsolotabla es mivel kossem ossze?
a felhasználó id-t összekapcsolod a pozíció id-val.B, ugy erted, hogy logikai adatok legyenek, amiket vegig kell pipalni minden egyes alkalommal?
attól függ milyen sql-ben csinálod, de az adatbázisban ez kinézhet úgy hogy 1 az igaz, 0 a hamis értéke.az általad írt program felületén bármelyik megoldást használod, mondjuk a checkbox-okat pipálgatnia kellene annak, aki kezeli a dolgozók adatait, utána nyilván lekérdezed és nem kell ismét bepipálni mindig, hanem kitöltődik az az érték amelyik igaz rá. (persze meg lehetne oldani listbox-szal is, ahol többet is lehet választani egyszerre, de a lényege ugyanaz)
a kérdéseid alapján kicsit távolinak érzem a szükséges tudást és a bevállalt/rád kiosztott feladatot.
[ Szerkesztve ]
-
DS39
nagyúr
válasz FIREBLADE78 #3230 üzenetére
csúcstechnika lehet ha sql 2000 kell hozzá..
szerintem próbáld meg egy virtuális xp-n.[ Szerkesztve ]
-
DS39
nagyúr
válasz FIREBLADE78 #3232 üzenetére
Lövésem sincs. Ez az SQL szoftver-fejlesztés fórum (értsd SQL kódok a téma, nem a szerver telepítés), nem rendszergazda topic. Ráadásul nem tudhatjuk milyen programot vettél, proxy kártyás hotel zár, az pontosan mi is?
-
DS39
nagyúr
válasz FIREBLADE78 #3236 üzenetére
Megnéztem a program leírását:
2.1.2 Rendszerkövetelmények
1) Internet Explorer 6.0 vagy jobb.
2) Windows 2000 vagy Windows XP Professional operációs rendszer.
3) SQL 2000 szerver adatbázis-kezelő program.
4) Bármilyen más szoftver telepítése a rendszer biztonságának megőrzése érdekében nem
ajánlott.Amit írtam korábban, virtuális XP-t használj ehhez a programhoz. Ezt nem csak SQL szinten csinálták meg régi környezetre.
[ Szerkesztve ]
-
DS39
nagyúr
válasz kezdosql #3264 üzenetére
Nem, egyikotoknek sincs fogalma se rola, mert ti csak abban gondolkodtok, hogy vannak adattablak, amiket csak ossze kell kapcsolni es kesz.
ja, csak ennyiből áll az sql...de igazad van a te feladatot sokkal nehezebb, én tuti nem csinálnám, adminisztratív munka, engem az adatok információ tartalma sosem érdekelt. (az a megrendelőt érdekli, ehhez kell előállítani a megfelelő adatbázis-környezetet)
viszont nem is tudom miért írtál az sql topicba, hiszen a feladathoz maximum excel szükséges.
-
DS39
nagyúr
Sziasztok!
MS SQL-es kérdésem lenne, van két adatbázis szerver, az egyiket be szeretném csatolni a másik alá, Linked Server-ként.
Tudom, hogy google a barátom, de ezúttal még nem vezetett rá a tökéletes megoldásra.
Tudtok segíteni hogy ezekbe a mezőkbe milyen paramétereket vár?
Van ip címem, szervernevem, csak nem tudom mit hova.[ Szerkesztve ]
-
DS39
nagyúr
válasz Cathfaern #3360 üzenetére
hát azért az elég fapad megoldás lenne, és 50x 5-6 oszlop tartalmát módosítani...
ha ez az összeírás egy excelben történt, és nem papíron akkor könnyen megoldható.
ha papíron, akkor is egyszerűbb létrehozni egy kapcsoló táblát ezzel az 50 sorral (régi id, új id), utána lehet rá írni, egy update sql-t a többi adat áttöltésére. -
DS39
nagyúr
sziasztok!
nekem egy olyan segítség kellene, hogy hogyan lehet dinamikusan oszlopokat létrehozni egy select-ben?
pl. van egy lista jelenleg
user_id | össz_pontés egy ilyesmi szeretnék csinálni.
user_id | össz_pont | 2017-01-01 | 2017-01-02 | 2017-01-03 | 2017-01-04 | 2017-01-05A dátumok alá, az adott napon szerzett pontok jelennének meg. Ez nyilván nem gond, viszont nem fix dátumok lennének az oszlopok, hanem lenne egy TOL - IG dátum paraméter, ami alapján kellene létrehozni az oszlopokat.
remélem érhetően írtam le, és tudtok segíteni.
-
DS39
nagyúr
Köszi, mindkettőtöknek, próbálkozom ezekkel.
-
DS39
nagyúr
válasz DrojDtroll #3370 üzenetére
csodálom hogy egyik is jó.
like-nál szerintem %-ot kellen használni, a másiknál meg lemaradt egy ilyen " -
DS39
nagyúr
válasz kw3v865 #3394 üzenetére
Szia!
Ezt úgy lehet megoldani, hogy megnézed mi lenne insertálva:
INSTEAD OF INSERT
AS
BEGININSERT INTO TABLANEV (oszlopnevek....)
SELECT oszlopnevek...
FROM INSERTED IEND
--------
itt a SELECT-en belül használhatsz CASE WHEN-eket, hogy adott oszlop értéke ha ez, akkor legyen helyette amaz. remélem érted[ Szerkesztve ]
-
DS39
nagyúr
vagy ha nincs egy konkrét érték amit vizsgálj, akkor az INSERTED selectjében ki cserélhetetd azt az oszlopértéket a belső selected sum-jára.
SELECT oszlop1, oszlop2,
(SELECT SUM (TELEPULES.LAKOSOK) FROM TELEPULES
WHERE TELEPULES.SHAPE.STWithin(I.SHAPE)=1),
oszlop4, oszlop5 ....
FROM INSERTED I(@terulet helyett bekerülendő shape oszlop értékét betéve, már nem kell tudd az objectid-t)
[ Szerkesztve ]
Új hozzászólás Aktív témák
- Otthoni hálózat és internet megosztás
- Rendkívül ütőképesnek tűnik az újragondolt Apple tv
- Xiaomi 13 - felnőni nehéz
- Vezetékes FEJhallgatók
- Apple Watch Sport - ez is csak egy okosóra
- Külpolitika
- VPN topic
- Rövid előzetesen a S.T.A.L.K.E.R. 2: Heart of Chornobyl
- TP-LINK routerek
- Milyen autót vegyek?
- További aktív témák...