Warning: count(): Parameter must be an array or an object that implements Countable in /home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line 820

1 (edited by DY 2007-03-17 14:17:31)

Topic: Rikiavimas pagal dvi lenteles

Labas,

Ar įmanoma būtų apjungti dvi skirtingas lenteles rikiavimu?

Pavyzdys čia būtų - tarkim, yra lentelė "žmonės" ir lentelė "Kompanijos". Aišku, stulpeliai ten skirtingi, išskyrus kai kuriuos (tarkim, yra bendri stulpeliai "Telefonas", "Adresas"). Reikia sudaryti lentelę taip, kad visi kontaktai būtų surašyti abėcėlės tvarka - pvz. po kompanijos "Panevėžio statyba" eitų žmogus Vardenis Pavardenis, paskui kompanija "Per kančias į žvaigždes" ir pan. (taigi, būtų rikiuoama pagal kompanijų pavadinimus lentelėje "Kompanijos" ir pagal pavardes lentelėje "žmonės"; stulpelyje "įrašas" būtų pateikiamas arba pavadinimas, arba vardas ir pavardė). Dar būtų pateikiami telefonai, adresai, ir, pavyzdžiui data (iš stulpelio "Gimimo data" lentelėje "žmogus" ir iš stulpelio "Steigimo data" lentelėje "Kompanijos", datos būtų viename stulpelyje, įvardytame "Data" - ar taip įmanoma?). čia, aišku, tik pavyzdys, kad būtų aiškiau, ko klausiu.

čia šitą daryčiau su PHP, taip kad jei nėra tiesioginės galimybės MySQL padaryti, gal galima su PHP?

Mintys - blogas apie gyvenimą, politiką, ekonomiką, kultūrą, mokslą ir kitką.
Adventure Lietuva - kompiuteriniai žaidimai, kurie yra meno forma.
Pasaulio šalių himnai - įrašai, žodžiai ir jų vertimai, informacija.

Re: Rikiavimas pagal dvi lenteles

Galima su MySQL maždaug taip:

SELECT pavadinimas,
   data
FROM
((
SELECT vardas_pavarde AS pavadinimas,
   gimimo_data AS data
FROM zmones
) UNION (
SELECT imones_pavadinimas AS pavadinimas,
  steigimo_data AS data
FROM imones
)) tmp
ORDER BY pavadinimas, data

3 (edited by DY 2007-03-18 20:00:28)

Re: Rikiavimas pagal dvi lenteles

Padarius kažką panašaus mano atvejui metama tokia klaida (PHP My Admin):

Error

SQL query: Edit

SHOW TABLE STATUS LIKE 'tmp';

MySQL said: Documentation
#1046 - No database selected

Kitos užklausos veikia normaliai. Po tokios užklausos PHP My Admin viršuje kur rašomas serveris ir duomenų bazė kažkodėl rašomas ne tikrasis duomenų bazės pavadinimas, o toks pavadinimas, koks yra antrosios lentelės šioje užklausoje.

Mintys - blogas apie gyvenimą, politiką, ekonomiką, kultūrą, mokslą ir kitką.
Adventure Lietuva - kompiuteriniai žaidimai, kurie yra meno forma.
Pasaulio šalių himnai - įrašai, žodžiai ir jų vertimai, informacija.

Re: Rikiavimas pagal dvi lenteles

Tai bandyk dirbti ne per phpMyAdmin'ą.

5 (edited by DY 2007-03-24 02:32:22)

Re: Rikiavimas pagal dvi lenteles

Na mano "hostinge" rodos galima prieiti prie duomenų bazės tik per PHP My Admin, būtų galima bandyti su PHP kodu, bet ilgiau užtruktų.

Padariau maždaug šitaip, veikia ir rikiuoja taip, kaip reikia:

SELECT zmogus AS irasas, data FROM zmones UNION SELECT pavadinimas AS irasas, data FROM Kompanijos ORDER BY data

(aišku, realiai ten užklausa sudetingesnė, su WHERE sąlyga, sujungimais (JOIN). Taip pat kadangi iš vienos lentelės reikėjo paimti daugiau stulpelių, imant įrašus iš kitos teko pridėti tokius stulpelius įrašant "-" AS stulpelio_pavadinimas).

Mintys - blogas apie gyvenimą, politiką, ekonomiką, kultūrą, mokslą ir kitką.
Adventure Lietuva - kompiuteriniai žaidimai, kurie yra meno forma.
Pasaulio šalių himnai - įrašai, žodžiai ir jų vertimai, informacija.