Adatbázis: SQL, XML DB

Lekérdezés SUBSELECT nélkül

Sziasztok!

MySQL-el szenvedek, mert a hosztingnál csak 4.0.24-es MySQL van fent, és az nem szereti a SUBQUERY-t.
Van egy SQL lekérdezésem, és a feltételek között ellenőriznem kell, hogy egy adott ID NEM szerepel egy másik táblában.

A lekérdezés itt:
http://pastebin.ca/1333909

Már keresgéltem az agyamban, és "gugol"tam is, de sajnos semmi ötlet nem maradt...

Mindenkinek előre köszönöm a rám áldozott energiát!

[megoldva] MYSQL - eredmények szűrése

UPDATE: Köszönöm szépen a segítséget mindenkinek, sikerült megoldani!

Sziasztok!

Van nekem egy ilyenem:

SELECT * FROM ceg LEFT JOIN cegelerh ON ceg.id=cegelerh.ceg_id AND cegelerh.megye_id=$_GET[megye] WHERE ceg.nev LIKE '%$_GET[s_ceg_neve]%' AND ceg.$_GET[kat] = 1 GROUP BY cegelerh.megye_id ORDER BY ceg.nev LIMIT $tol, 10

A bajom a GROUP BY. Ugye az lenne a lényeg, hogy minden cégnél, ahol több elérhetőség is van, ott csak 1 darabot listázzon ki. Az a baj, hogy a GROUP BY kiszűri azokat a találatokat is, amik másik céghez tartoznak, de ugyanabban a megyében vannak, így a találati lista nem ad vissza korrekt eredményt.

Hogy adom meg a GROUP BY-nak hogy csak akkor szűrjön, ha azonos ceg.id van? Esetleg milyen workaround van rá?

(Nézegettem az allekérdezéseket is, hogy hátha az a megoldás, de az még nem nagyon tiszta nekem).

Oracle 11g backup

Sziasztok,

Oracle 11g alatt kellene néhány adatbázisról mentést csinálnom.Azt megmondta a gúgli is,hogy rman-al lehetséges mindez.Sikerült is csatlakoznom vele az adatbázishoz, de amikor kiadom a backup database; parancsot, akkor az alábbi hibát kapom:

RMAN> backup database;

Starting backup at 04-FEB-09
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=109 device type=DISK
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
RMAN-03009: failure of backup command on ORA_DISK_1 channel at 02/04/2009 09:38:20
ORA-19602: nem lehet az aktiv fajlt kimenteni vagy masolni NOARCHIVELOG modban
continuing other job steps, job failed will not be re-run
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: failure of backup command on ORA_DISK_1 channel at 02/04/2009 09:38:42
ORA-01587: hiba tortent a vezerlofajl biztonsagi masolatfajljanak masolasakor
ORA-27072: Fajlirasi/fajlolvasasi hiba
Linux Error: 2: No such file or directory
Additional information: 4
Additional information: 67
Additional information: 303104

RMAN>

azt látom, hogy valamilyen fájl io hiba,de ha valaki tudna segíteni azt megköszönném.

Hiányzó kapcsolódó tábla rekord

Sziasztok!
A következőt szeretném megvalósítani:
Szeretném egy MSSQL adatbázisban a következőt megcsinálni, kicsit egyszerűsítettem a feladaton:
1. tábla
id
fk_id
kod
2. tábla
id
1_id

A két tábla így van összekötve: join fk_id = 1_id, 1:1 kapcsolat
Szeretném leválogatni az 1. tábla azon mezőit, amihez nem tartozik a 2. táblában rekord, lehetőleg egy egyszerű select utasítással.
Valami ötlet?

PostgreSQL tuning régi vason

Sziasztok!

Van egy régi vas, az alábbi hardver tartalommal:
ALAPLAP: Tyan Tiger MP 1.05
CPU: 2xAthlon 1200
MEM: 512M (2x256M, de lesz ez 768M vagy 1024M is :) )
1. RAID: IBM ServeRaid-4Lx (PCI-X)
2. RAID: Adaptec AHA2110S (PCI-X)
NET: 3COM-905B

Azért pont ez az alaplap, mert a raidvezérlők miatt (valójában csak az AHA2110S miatt) kellenek a 64bites PCI slot -ok.

Ezen fognak futni az alábbiak:
- FreeBSD 7-STABLE
- Apache2+php
- PostgreSQL
- Postfix+*

Használat, terhelés:
Feladata: helyi viszonyokra írt, közös (php -ben megírt) adatkezelés megvalósítása, telefonközpont híváslog sql -be mentése, stb...
Nem túl nagy terhelés, azaz: nem hasznájuk sokan.
Konkurrens (php-felület) használat: 2. Néha, nagyritkán 3 -an egyszerre.
Nagymennyiségű adatbevitel: általában havonta 1-szer a feldolgozott, beárazott híváslog (SQL-COPY)
Kismennyiségű (állandó) adatbevitel: társközpontból híváslog (radius -on keresztül), ill. céges központ nyers (text) híváslog. Nappal: 3....10rekord/perc, éjjel: 3....10rekord/óra.
Manuális adatbevitel: 5...40 űrlap/nap
Manuális adatlekérdezés: n*10 űrlap/nap (néha ez jóval több, de enm mindig)

A php -s felület jelenleg egy másik gépen is fut. Ezen csak "elérhetőségi tartalék" gyanánt van fent.

Némelyik lekérdezés viszont nagyon lassúnak tűnik.
Talán azért is, mert elég sokminden szét van bontva külön táblákra. Pl.: egy teljes-szervezeti-info-lista lekérés (view neve: unit_hier_current) "csak" 12 kapcsolt (inner és left join -ok) táblából áll, valamint 2 oszlopba külön függvény adja az adatokat.
Persze nem minden ennyire bonyolított, de a legöbb SELECT nem "egytáblás".

Ennek fényében mit érdemes tuningolni a PostgreSQL -en?
Érdemes egyáltalán tuningolni bármit is?
Milyen blokkméreteket érdemes beállítani? (filesystem blocksize, raid stripe size, PostgreSQL blocksize)

Megj.: tudom, hogy "nem valami erős gép", de eddig (~2003 közepétől) az alábbiak voltak:
1. Celeron-533, 256M (majd később 384M) ram, ...
2. Celeron-766, 384M (később 512M) ram, Mylex DAC960 -as raid, szalagos mentés, stb...
3. dual-P2-450, 512M (utána 768M) ram, on-board "aha2940", mylex raid, hotswap scsi keret

A válaszokat előre is köszönöm.

--
vaxx

firebird eljárásban mi a hiba?

Adott egy tábla:

CREATE TABLE TABLA(
NEV VARCHAR(25) NOT NULL,
RNEV VARCHAR(5) NOT NULL,
JEL CHAR NOT NULL,
MERTEK DECIMAL(18,4) NOT NULL,
BEVIDO DATE NOT NULL,
PRIMARY KEY (JEL, BEVIDO)
);

Adott időponton belüli legkésőbbi BEVIDO-jű, adott JEL-ű rekordot kell kiválasztani.
Simán az alábbi lekérdezéssel működik:
SELECT NEV, RNEV, JEL, MERTEK
FROM TABLA AS T0 WHERE
JEL='C' AND BEVIDO=
(SELECT MAX(BEVIDO) FROM TABLA AS T1 WHERE
T1.JEL='C' AND T1.BEVIDO<=current_date)

Ugyanez eljárásba adoptálva nem ad eredményt:
CREATE PROCEDURE GETREC (AJEL CHAR, ADATUM DATE)
RETURNS (NEV VARCHAR(25), RNEV VARCHAR(5), JEL CHAR, MERTEK DECIMAL(18, 4))
AS
BEGIN
SELECT NEV, RNEV, JEL, MERTEK
FROM TABLA WHERE
JEL=:AJEL AND BEVIDO=
(SELECT MAX(BEVIDO) FROM TABLA AS T0 WHERE
T0.JEL=:AJEL AND T0.BEVIDO<=:ADATUM)
INTO :NEV, :RNEV, :JEL, :MERTEK;
END!!

Mi a gondja?

sql táblák

Helló Mindenkinek!

Nemrég elkezdtem mysql-t tanulni. Klasszikus példa: embereket akartam nyilvántartani. Ezt sikerült megoldani. Utána jött a nagy ötlet: emberek tudjanak üzeneteket küldeni egymásnak. Valami ilyesmire gondoltam:

message tábla:
--------------
| feladó |
| címzett |
| üzenet |
--------------

Ha a valakinek ki kell listázni az elküldött leveleit, lekérdezem azokat amikben ő a feladó. Ha valakinek a kapott leveleit akkor a címzettek alaján megy a lekérdezés.

A probléma ott kezdődik, amikor valaki több embernek is szeretne küldeni. "címzett"-ekhez hogyan tudnék tetszőleges számú embert beírni? Másképpen: Lehet-e "címzett" egy tömb amibe pl. 10db 30 karakterből álló string megy? Vagy mégjobb: Lehet-e "címzett" egy tábla? Mondjuk ilyen:

---------------
| címzettek |
| elolvasta |
| törölte |
---------------

Értelem szerűen, első a nevek akiknek el lett küldve, második igaz/hamis, harmadik szintén igaz/hamis.

Esetleg ha tud valaki jó leírás(oka)t, vagy könyvcím(ek)et azt is szívesen veszem!