Kezdőlap › Fórumok › Programozás › SQL programozás
- This topic has 37 hozzászólás, 9 résztvevő, and was last updated 19 years, 4 months telt el by
kl223.
-
SzerzőBejegyzés
-
2005-12-24-18:59 #2012961
MySQL 4.1-en kell dolgoznom, és a következõ a probléma:
SELECT id,cim,
(SELECT COUNT(*) FROM iromany WHERE szulo=iromany_kategoria.id), –AS entrynum
(SELECT datum FROM iromany WHERE szulo=iromany_kategoria.id ORDER BY datum DESC) –AS datum
FROM iromany_kategoria ORDER BY (SELECT datum FROM iromany WHERE szulo=iromany_kategoria.id ORDER BY datum DESC) DESC;Valami ilyesmi kellene, csak nem megy… üreset ad vissza, pedig nem kellene neki. Egy view-szerûséget akarok megvalósítani, csak nem megy jól…
2005-12-24-20:25 #2012962Ebbõl elég nehéz lesz kideríteni. Jól jönne egy dump, amibõl látnánk a szerkezetet.
Egyébként próbáld belülrõl indulva konzolos mysql kliensbõl végigkövetni részenként a queryt. (mármint a subqueryket külön-külön futtasd le amennyire lehet, és akkor jó esetben rájössz a hibára.)kl223
2005-12-24-21:37 #2012963Az a baj, hogy a subquery szintaxisa nem elég világos elõttem, azaz, hogyan lehetne mysql-lel view-szerû query-ket csinálni…
2005-12-25-08:13 #2012964xcut wrote:Az a baj, hogy a subquery szintaxisa nem elég világos elõttem, azaz, hogyan lehetne mysql-lel view-szerû query-ket csinálni…Nos, igen.
2005-12-28-12:00 #2012965Bocs! – nem is tudtam mit indítottam el … ;o)
Nos, ami szerintem a legfontosabb, a mysql csak az innoDB táblákkal tusd tranzakcionális kezelést (commit/rollback), nem ismeri a referencia integritést, azaz a porogramnak magának kell ellenõríznie pl. a kulcsok egyediségének feltételeit ill. a relációs kapcsolatok kulcsainak megfelelõségét. Gyakorlati tapasztalat szerint az adatbázis növekedésével egyre lassabb a motor (amit én láttam egy év után szinte használhatatlan pedig nincs benne 1 mill rekord – ennél sokkal nagyobb adatbázisokat kezelek – nem SQL és nem kliens/szerver mégis flottul szalad, hasonló kaliberû gépeken, tény hogy itt menden binárian tárolódik és néhány trükköt is bedobok).
A postgre ezektõl a hibáktól hiányosságoktól mentes, azaz alapból van tranzakció kezelés, relációs adatbázis kulcsainak ellenörzése (számlafej/tétel példánál, nem enged olyan tételt insertálni aminek nincs feje). Azonban ha tényleg megtervezed és beviszed ezeket a szabályokat az adatbázis táblákba akkor sok bonyodalom érhet, amit a mysql -nál észresem veszel amíg tételesen nem kezded el átfésülni az adatokat! Ha erre nem készülsz fel, akkor sok bajod lessz, pedig csak egy szigorúan ledefiniált adatbázisod van. Ki ois hagyhatod ezeket, sõt a fejlesztési stádiumban még gyorsabban is tudsz haladni, és csak akkor „húzod rá” az adatbázisodra ezt a „nessus” inget amikor termék lessz – persze egy komplett ellenörzés kell.
Ami view kontra join dolgokat illet mindenképpen a view -ra szavazok a gyakori lekérdezéseknél, mindezt persze „megpatkolnám” azzal hogy a felhasználó legfontosabb adatait igenis beépíteném a hozzászólásaiba, méghozzá a bejelentkezéskor cachel-t rekordból, persze ha a sebesség a fõ cél!
Az egyszerû programozásnál is áll a dilemma, hogy több kód/adat nagyobb sebesség vagy kevesebb kód/adat kisebb sebesség, ez alapvetõen az egyidejûleg benntartott rekordokra vonatkzik, ill. a redundáns adatok tárolásában is jelentkezik.
Ami a netes adatbázis alkalmazást illeti abban tökéletesen egyet értünk hogy az eredmény a fontos hiszen az sokkal több mint egy-egy lekérdezés és még mindíg a sávszélesség gondok vannak, viszont azért a motor reakció sebességével is számolni kell, azaz ha túl sokat kell „mókolnia” az sem jó! Itt jönnek a mérnöki szempontok és a megfelelõ kompromisszum megtalálása.2005-12-30-14:01 #2012966kl223: lehet én értettem félre… akkor átfogalmazom: MySQL 4.1 a platform.
A következõt szeretném megcsinálni:
CREATE VIEW vmyview AS
SELECT
ize1,
ize2,
ize3
FROM tabla1 ORDER BY ize0 DESC,
SELECT COUNT(*) FROM tabla2 WHERE ize4=tabla1.ize1 AS ize5;
ezt hogyan lehetne mysql-ben 1 query-vel?2006-01-01-21:06 #2012967Hali xcut…
Szóval az lenne neked a lényeg, hogy 2 különbözõ táblából nyert query adatait egyesítsd egyetlen queryvel?
Ezt vhogy így csinálnám meg (nincs fent jelenleg a mysql-emben tartalom, szal nemtom érdemileg tesztelni, de ötleteket szeretnék adni)Ilyet is lehet: kiválasztja azokat a sorokat a tabla1-bõl, amiknek az ize0 oszlopa egyezik a tabla2 bármelyik sorának ize5 oszlopával:
Code:SELECT tabla1.ize1,tabla1.ize2,tabla1.ize3 FROM tabla1,tabla2 WHERE tabla1.ize0 = tabla2.ize5;Ezt persze lehet szigorítani:
Code:SELECT tabla1.ize1,tabla1.ize2,tabla1.ize3 FROM tabla1,tabla2 WHERE tabla1.ize0 = tabla2.ize5 AND tabla2.ize5 = …;Ha jól értem, te a tabla1-bõl akarsz kiválasztani néhány oszlopot
2009-12-04-19:57 #1879289Adott egy tábla, melynek sorai-rekordjai módosíthatóak. Követni kellene a módosításokat. Kézenfekvõnek tûnik a kiinduló sor egyedi azonosítóját (egy autoincerement vagy sequence -el képzett egyedi azonosító) „telepítem” minden sorba.
-
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.
legutóbbi hsz