Új hozzászólás Aktív témák
-
Apollo17hu
őstag
válasz Brown ügynök #1250 üzenetére
Kellene egy mező, ami megmondja, hogy a stock_product_history táblában mely intake_id-k mely reservation_id-kkal vannak kapcsolatban. (Kapcsolat esetén a mező értékének egyeznie kell a két rekordnál.)
Szerintem ezt lehet egyszerűsíteni, de nem teljesen értem, hogy mi a végcél. Talán egy olyan táblából kellene kiindulni, ahol az intake_id és a reservation_id egy soron szerepelnek, és csak akkor vannak töltve, ha a tényleges esemény (bevitel vagy foglalás) megtörtént. Nem tudom, hogy az események között van-e valamiféle időbeli sorrendiség, de előfordulhat, hogy mondjuk volt már foglalás, de azt nem vitték még be (ekkor utóbbi értéke null). Vagy az intake nem erre vonatkozik?
Ha ez tisztázódott, utána lehet a product, store stb. mezőket hozzáadni a modellhez.
-
Brown ügynök
senior tag
válasz Apollo17hu #1252 üzenetére
A végcél az, hogy adott időszakra vonatkozóan megkapjuk egy termékről a raktári beviteleket (intake) és a teljesített foglalásokat (reservation) ami ez esetben a raktár kivétel lesz. Az i.available jelzi, hogy mikor van az áru ténylegesen a raktárban, a r.completed pedig azt, amikor teljesült a foglalás vagyis elvitték az árut. Foglalni a bevitelből lehet, tehát az intake_id a reservation táblában megvan.
"hacsak nem jön a jó tündér break utasítás képében..."
-
Apollo17hu
őstag
válasz Brown ügynök #1253 üzenetére
Akkor szerintem 2 tábla kellene:
BEVITEL: termék | mikor | mennyit
FOGLALÁS: termék | mikor | mennyitEzeket "termék"-en keresztül kötöd össze, a két "mikor"-ra szűrsz, a "mennyit" mezőt pedig aggregálod (GROUP BY).
Egy táblában is meg lehetne oldani (ahogy neked most a főtáblád tárolja az adatokat) kötések nélkül:
TÁBLA: termék | bevitel_mikor | bevitel_mennyit | foglalás_mikor | foglalás_mennyit
Ebben az esetben viszont vagy a "bevitel_mikor" és "bevitel_mennyit" vagy a "foglalás_mikor" és "foglalás_mennyit" mezők értéke lenne null, tehát feleslegesen nőne az adatbázis mérete.
A lényeg, hogy termékazonosítón keresztül lenne célszerű kötni.
-
drogery
tag
Sziasztok,
egy kis segítséget kérnék. Egy lekérdezéshez szeretnék egy új oszlopot adni.
Van egy besorolás mezőm, ami 15 értéket vehet fel, amit 3 csoportra szeretnék bontani.
Tehát ha ez a besorolás = 1,3,4,5stb akkor az új mezőm adjon 1et
ha 2,10,6 stb akkor adjon 2 őt
ha 7,9,11 akkor adjon 3at.
Ezt hogyan tudnám megcsinálni? -
Brown ügynök
senior tag
válasz Apollo17hu #1254 üzenetére
Így már csak azokkal a beviteli és foglalási sorokkal tér vissza amik a megadott intervallumba esnek. Csak az a baj, hogy nem a product_history tábla created oszlopa szerint rendezi őket (gondolom a group by miatt). Úgy látom szinte az összes adatot be kell szúrnom az intake és a reservation táblából, hogy időrendben meg tudjam jeleníteni a mozgásokat... Köszi a segítséget!
SELECT *
FROM stock_product_history h
LEFT JOIN stock_intake_item it ON it.product_id = h.product_id
AND h.reservation_id is NULL
AND it.intake_id IN (SELECT id
FROM stock_intake
WHERE available BETWEEN :from AND :to
AND store_id = :storeId)
LEFT JOIN stock_intake i ON it.intake_id = i.id
AND i.available BETWEEN :from AND :to
LEFT JOIN stock_reservation_item ri ON ri.product_id = h.product_id
AND ri.reservation_id = h.reservation_id
LEFT JOIN stock_reservation r ON r.id = ri.reservation_id
AND r.completed BETWEEN :from AND :to
WHERE h.product_id = :productId
AND h.store_id = :storeId
GROUP BY ri.id, i.id
ORDER BY h.created ASC[ Szerkesztve ]
"hacsak nem jön a jó tündér break utasítás képében..."
-
Apollo17hu
őstag
válasz Brown ügynök #1256 üzenetére
Első ránézésre nem igazán menő, hogy IN után allekérdezést használsz. Ha kicsit több időm lesz, megnézem a kódot, de ha az eredmény jó neked, akkor nagy gond nem lehet.
-
Apollo17hu
őstag
válasz Brown ügynök #1256 üzenetére
A stock_intake_item és a stock_intake táblát összevonhatnád. Utóbbi csak egy időpecsétet tartalmaz, felesleges szétszedni. Lenne a kettőből egy táblád, ami megmutatja, hogy adott napon adott termékből hány darab került be.
Hasonlóan kellene tenni a stock_reservation_item és stock_reservation táblákkal.
IN helyett elvileg JOIN-olhattad volna a stock_intake táblát. Úgy, ahogy a stock_reservation táblát is bekötötted.
-
Brown ügynök
senior tag
válasz Apollo17hu #1259 üzenetére
A stock_intake tábla egy store_id-t is tartalmaz. Na, inkább megmutatom a táblákat.
intake
id, name, store_id, available, created, updatedintake_item
id, intake_id, product_id, quantityreservation
id, name, created, completedreservation_item
id, reservation_id, intake_id, product_id, quantityproduct_history
id, product_id, intake_id, reservation_id, store_id, createdMost úgy oldottam meg, hogy a product_history táblába felvettem a mennyiséget és a teljesülés dátumát (amikor ténylegesen ki/bevitték a raktárba az árut). Kvázi tehát kétszer lesz meg az adat, de nem tudtam máshogy megoldani, hogy a teljesülés dátuma szerint rendezze a bevitel és kivétel sorait a lekérdezésben. A product_history a változtatások után:
product_history
id, product_id, intake_id, reservation_id, store_id, quantity, created, completedA lekérdezés:
SELECT h.id, h.completed, quantity, r.name reservation_name, i.name intake_name,
i.created intake_created, r.created reservation_created
FROM stock_product_history h
LEFT JOIN stock_intake i ON i.id = h.intake_id
LEFT JOIN stock_reservation r ON r.id = h.reservation_id
AND r.completed BETWEEN :from AND :to
WHERE h.product_id = :productId
AND h.store_id = :storeId
AND h.completed BETWEEN :from AND :to
ORDER BY h.completed"hacsak nem jön a jó tündér break utasítás képében..."
-
spammer
veterán
Létrehoznék egy új mezőt, aminek egyedinek kellene lennie, de hibaüzenetet kapok:
Duplicate entry '' for key 'confirm_id'
Ez milyen duplikált dologról magyaráz? Simán létre tudom hozni, de ha unique-ot állítok be, akkor hiba. Enélkül meg hogy lehetne egyedi?
„A feketébe öltözött ember a sivatagon át menekült, a harcos pedig követte."
-
spammer
veterán
Most szeretnék hozzáadni a táblához egy ilyen nevű oszlopot. Varchar lenne, igen. Phpmyadminban kiválasztottam, hogy új oszlop beszúrása:
Név: confirm_id
Típus: VARCHAR
Hossz/érték: 64
Index: UNIQUEEnnyi, kész, rányomok a mentés gombra, és hiba.
#1062 - Duplicate entry '' for key 'confirm_id'
Nincs más confirm_id nevezetű sehol, most akarom létrehozni.
Lehet akárhány unique oszlop egy táblában, nem? Másképp hogyan lehetne megadni, hogy az adott oszlopban lévő adatok nem ismétlődhetnek, egyedieknek kell lenniük? Vagy félreértek valamit?
„A feketébe öltözött ember a sivatagon át menekült, a harcos pedig követte."
-
-
spammer
veterán
válasz Peter Kiss #1264 üzenetére
Oh shit, szóval az volt a baj, hogy már volt néhány sorom, és mikor létrehozta volna az oszlopot így azok alapból üresek voltak, így már nem is lehetnek egyediek (mert nincs tartalmuk). Ehh... Most már jó, köszi
„A feketébe öltözött ember a sivatagon át menekült, a harcos pedig követte."
-
spammer
veterán
True/False értékre TINYINT mezők vannak nekem beállítva, de látom, hogy ilyesmire használható a BIT is. Van értelme BIT -re váltani, ha csak 0 és 1 értékek kellenek (csak a true/false miatt), vagy tökmindegy? Gyakorlati haszna van, vagy ne foglalkozzak vele, jó ez?
„A feketébe öltözött ember a sivatagon át menekült, a harcos pedig követte."
-
-
bolvar
senior tag
Sziasztok
Elég kezdő vagyok még a mysql témában de szerintem ez a megfelelő topic a kérdésemnek.Facebook app írásra adtam a fejemet és herokun keresztül tettem ezt.Hozzácsatoltam az appomhoz a cleardb mysql addont de innentől kezdve elakadtam.Nem tudom hogy az adatbázisomat hogy érjem el.Megvan az url címe de arra nem tudok felcsatlakozni.Ha esetleg valaki tudna segíteni vagy felvilágosítani mit csinálok rosszul azt megköszönném .De ha valaki tud elfogadható áron ssl-es tárhelyet azt is szívesen fogadom
Előre is köszönöm a segítségeteketA jó lányok azt mondják: NEM! A rosszak azt, hogy: HOL? :)
-
martonx
veterán
válasz Peter Kiss #1267 üzenetére
Plusz milliós nagyságrendű soroknál már jelentős helyet tudsz megtakarítani. Ha az a meződ index, akkor a hely megtakarítás máris duplázódik.
Én kérek elnézést!
-
-
válasz martonx #1269 üzenetére
így igaz.
@Jester01
BIT(M) = approximately (M+7)/8 bytes
B-Tree esetén value-t és record pointer-t tárol (MyISAM - offset, INNODB - primary key) szóval számít itt is a méret. "Alap b-tree index" kapcsán nem tudom, mire gondolsz, de, ha a primary key-re INNODB-ben (clustered index), akkor abban valóban foglal helyet egy BIT(N), hacsak nem az a primary key, de ilyen index, ha hatalmas a tábla, kb. nem való semmire, csak a JOIN-ok gyorsítására PKEY mentén. -
martonx
veterán
válasz Jester01 #1270 üzenetére
"Azt kétlem, hogy egyetlen BIT mező tárolásához ne foglalna le legalább egy byteot. Esetleg ha több ilyen mező van egy rekordban akkor összepakolhatja őket." - ez igaz, ez annyival árnyalja a képet, hogy a helymegtakarítás nem feltétlenül jön elő.
Viszont kettő plusz szempontot még mondok a bit mellett. 1. amikor lehetséges méretcsökkenésről beszélünk ott ne csak a tábla által elfoglalt helyet vegyük figyelembe, hanem könnyebben, több mindent tarthat a memória pufferében az SQL motor, illetve az adatok átadásakor is megjelenik a kisebb méretből fakadó előny. Nem mindegy, hogy egy SQL lekérésre 100.000 byte-ot, vagy 100.000 bit-et kapunk vissza.
Én kérek elnézést!
-
spammer
veterán
Köszi a válaszokat, átállítottam BIT-re a mezőket.
„A feketébe öltözött ember a sivatagon át menekült, a harcos pedig követte."
-
spammer
veterán
Van valakinek ötlete, hogy miért lehet az, hogy duplán számol valamit update-kor?
Sikertelen bejelentkezéseket akarok számolni:
UPDATE users SET hitcount=hitcount+1 WHERE ........
+1 van, és mégis 2-esével növeli. 0-2-4... stb.
„A feketébe öltözött ember a sivatagon át menekült, a harcos pedig követte."
-
spammer
veterán
válasz fordfairlane #1275 üzenetére
Nem tudok róla, főleg, hogy ez else részben van benne:
if (ha jók adatok) {
} else {
error üzenet
és ez az adatbázis query.
}
Na most kipucolom és elkezdem újra összerakni, mert nem vágom, miért futtatja le 2x.
Szerk: 2x fut valamiért, most látom logban is.... Na akkor keresgélek
[ Szerkesztve ]
„A feketébe öltözött ember a sivatagon át menekült, a harcos pedig követte."
-
SureStudio
tag
Sziasztok!
Az lenne a kérdésem(kérésem), hogy van egy oldalam...olyan php kódok szeretnék bele írni, ami a látogató IP címét tárolja egy mysql adatbázisban. Esetleg egy dátumot is hozzá. Előre is köszönöm!*-._.-* *-._.-*-* [SureStudio] *-*-._.-* *-._.-*
-
DanielK
addikt
válasz SureStudio #1278 üzenetére
elég egy helyre is feltenni...
-
spammer
veterán
Próbálom megszámolni a sorokat mysql-ben, phpmyadminban lefuttatva teljesen jó:
SELECT COUNT(*) FROM posts
esetleg:
SELECT COUNT(id) FROM posts
Kiadja, hogy 8 darab van.
php-ben lefuttatva a query-t kiíratom az eredményt:
echo 'Total results: ' . $result->num_rows;
És ezt kapom:
Total results: 1
„A feketébe öltözött ember a sivatagon át menekült, a harcos pedig követte."
-
-
spammer
veterán
válasz Peter Kiss #1281 üzenetére
Aha, rosszul értelmeztem, így már oké:
SELECT id FROM posts
„A feketébe öltözött ember a sivatagon át menekült, a harcos pedig követte."
-
válasz spammer #1282 üzenetére
Nem oké. Ha így számolod a sorokat mondjuk egy 5 millió soros táblában, akkor azt nagyon rosszul teszed.
SELECT COUNT(*) AS RowCount FROM posts
Aztán lekéred ennek az eredményhalmazát mint bármelyik más SELECT-nek, fetch-eled mondjuk objektumba (egy sorod lesz), az így kapott objektum RowCount field-jében lesz benne a COUNT(*) eredménye.
-
fordfairlane
veterán
-
spammer
veterán
válasz Peter Kiss #1283 üzenetére
És így?
$result = $db->query("SELECT COUNT(id) FROM posts");
$RowCount = $result->fetch_row();
echo "Total" . $RowCount[0];Működik, csak a kérdés, hogy mint módszer, ez is rossz-e?
Egyébként ha csak 'id' -t COUNT-olok, az számít valamit, vagy lényegtelen, és írjak nyugodtan csillagot? (Az elvileg ugye mindent kiválaszt).
(#1284) fordfairlane: igen, már értem, csak először rosszul értelmeztem
[ Szerkesztve ]
„A feketébe öltözött ember a sivatagon át menekült, a harcos pedig követte."
-
spammer
veterán
válasz fordfairlane #1286 üzenetére
Rendben, köszi.
„A feketébe öltözött ember a sivatagon át menekült, a harcos pedig követte."
-
martonx
veterán
válasz spammer #1285 üzenetére
"és írjak nyugodtan csillagot" - nos ezt éppen el kellene kerülni. Írhatsz a count-on belül bármit, én pl. count(1)-et szoktam, de a * használatát kerülni kellene, mert minden esetben plusz munkát jelent az SQL motornak a * feldolgozása (countnál talán éppen nem, de nem kellene rossz szokásokat felvenni).
Én kérek elnézést!
-
spammer
veterán
válasz martonx #1288 üzenetére
Igen, tudom, éppen ezért kérdeztem.
"countnál talán éppen nem"
Mármint ezért, mert nem tudom, hogy countnál számít-e. Azt tudom, hogy sima selectnél nem ajánlott, ha amúgy sem kell az összeset kiválasztani. Ezt már megtanultam De inkább én sem írok csillagot countnál sem.
„A feketébe öltözött ember a sivatagon át menekült, a harcos pedig követte."
-
-
spammer
veterán
Mi az oka annak, hogy query-ben nem ajánlott a != használata? Lásd [link]
Mert ahogy ott is írja, működik, de miért nem ajánlott ilyen formában használni? Biztonsági okokból?
[ Szerkesztve ]
„A feketébe öltözött ember a sivatagon át menekült, a harcos pedig követte."
-
spammer
veterán
válasz Sk8erPeter #1293 üzenetére
Ja, akkor félreértettem Azt hittem, hogy röviden akarta kifejezni, hogy hogyan ne csináljuk Furcsa is volt, hogy így volt megfogalmazva
Akkor jó, akkor maradok a != -nél
„A feketébe öltözött ember a sivatagon át menekült, a harcos pedig követte."
-
-
kornyiktamas
aktív tag
sziasztok
tudnátok küldeni normális "ingyenes" domain szolgáltatónak a weboldalát? ingyen kéne mysql szerver ahova tudok adatot menteni. köszönöm -
martonx
veterán
válasz kornyiktamas #1296 üzenetére
Ingyenes MySql kell? Telepíts egyet a gépedre lokálisan
Én kérek elnézést!
-
martonx
veterán
válasz kornyiktamas #1298 üzenetére
A klasszikus publikus hosztingok nem engednek távolról hozzáférni a Db-hez.
Ami neked kell az egy virtuális szerver. Erre azt telepítesz, amit csak akarsz, és onnan férsz hozzá ahonnan akarsz. Azure, AmazonWs, Google Engine, vannak magyar virtuális szerver hosztingok is, válassz közülük.Én kérek elnézést!
-
nova001
senior tag
hello
van egy oldalam amin bejelentkeztem a control panelen és átirtam a mysql jelszavam.azota az oldal az alábbi hiba miatt nem fut:
Database connection error (2): Could not connect to MySQL.mi lehet a gond ? phpmyadminba hozzá tudok férni az adatbázisomhoz...valamit átkéne irnom ?
az oldalon joomla fut
[ Szerkesztve ]
Új hozzászólás Aktív témák
- gban: Ingyen kellene, de tegnapra
- Realme 8 - az igazi nyolcas
- Mini-ITX
- Kerékpárosok, bringások ide!
- Politika
- Autós topik látogatók beszélgetős, offolós topikja
- Eredeti játékok OFF topik
- Kicsit extrémre sikerült a Hyte belépője a készre szerelt vízhűtések világába
- Crypto Trade
- Mikrotik routerek
- További aktív témák...