Jump to content
Forum Roportal
Sign in to follow this  
Talkabout

fraza SQL

Recommended Posts

am un query ca cel din exemplu.

dar daca vreau sa adaug la rezultatul acestuia inca o coloana, in care sa calculeze pretul pentru acea componenta cum ar trebui sa procedez?

ex.: blat de 100 grame, cu pretul/kg 20 lei, in a 4-a coloana as vrea sa apara 2. ca formula, ar fi (gramaj*pretComponentaPerKg)/1000, dar cum adaug o a 4-a coloana, in care sa fie calculat acest pret?

 

p.s. rename la fisier in Ex.mdb

Ex.txt

Share this post


Link to post
Share on other sites

Ce anume te intereseaza: cum adaugi in Access o coloana calculata la un query, sau cum adaugi in SQL o coloana calculata?

 

am modificat in exemplul tau ca sa-ti dea si a patra coloana

simultan ti-am transformat si legaturile dintre tabele din clauza WHERE in INNER JOIN

Ex.txt

Share this post


Link to post
Share on other sites

ma intereseaza cum adaug o coloana calculata, eu am o baza de date in sql server 2005 sai nu stiu acolo cum s-ar face, in Access nu e asa greu, mersi oricum

ai idee cum s-ar face din fraze sql acest lucru?

 

 

am gasit, si fraza SQL

inca o intrebare, daca m-ai putea ajuta ti-as fi recunoscator.

am atasat un avelasi exemplu, putin modificat la diagrama E-R.

cum as putea face ca atunci cand introduc o anumita pizza, si automat si componentele ei, sa nu se poata introduce pentru o pizza 2 componente care sunt incompatibile(care se afla in Incompatibilitati), deci sa nu ma lase sa introduc.

ex.: blat cu branza nu vreau sa le pot introduce pentru acelasi tip de Pizza. s-ar putea face asa ceva?

Mersi :airkiss:

 

oare acel Query de ce nu functioneaza cum trebuie si pe SQL Server 2005? nu primesc ceea ce trebuie, cand rulez acel query intr-o procedura stocata, iar in Access merge ok

Ex.txt

Share this post


Link to post
Share on other sites

am incercat pentru SQL Server 2005. si pentru pizza capriciosa,(de exmplu) mi-a afisat: numeComponenta Carnati(e ok, dar nu doar componenta asta o are), gramaj 50(ok), pretComponentaPerKg 11(ok), valoare 0(nu stiu de ce, probabil nu calculeaza cu virgula? merge doar pentru impartiri exacte?)

 

USE [pizzerie]
GO
/****** Object:  StoredProcedure [dbo].[GetComponentsForPizza]	Script Date: 05/11/2008 20:28:19 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[GetComponentsForPizza]
-- Add the parameters for the stored procedure here
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

-- Insert statements for procedure here
SELECT C.numeComponenta, R.gramaj, D.pretComponentaPerKg, R.gramaj*D.pretcomponentaperkg/1000 AS valoare
FROM pizza AS P 
INNER JOIN reteta AS R ON R.idPizza=P.idPizza
INNER JOIN componente AS C ON R.idComponenta=C.idComponenta
INNER JOIN CostComponente AS D ON C.idComponenta = D.idComponenta
WHERE P.tipPizza='sunca';
END

cam asta e procedura stocata

Edited by Talkabout

Share this post


Link to post
Share on other sites

Pentru SQL 2005 pune varianta asta:

 

SELECT C.numeComponenta, R.gramaj, D.pretComponentaPerKg, R.gramaj*D.pretcomponentaperkg/1000 AS valoare

FROM pizza AS P

INNER JOIN reteta AS R ON R.idPizza=P.idPizza

INNER JOIN componente AS C ON R.idComponenta=C.idComponenta

INNER JOIN CostComponente AS D ON C.idComponenta = D.idComponenta

WHERE P.tipPizza='capriciosa';

Share this post


Link to post
Share on other sites
cum as putea face ca atunci cand introduc o anumita pizza, si automat si componentele ei, sa nu se poata introduce pentru o pizza 2 componente care sunt incompatibile(care se afla in Incompatibilitati), deci sa nu ma lase sa introduc.

 

pentru lista de componente de adaugat la o pizza poti folosi urmatoarea procedura

 

create procedure GetComponente(@idPizza) as

select Componente.*

from Componente

where not idComponenta in

(select I.idComponenta2 from Reteta inner join Incompatibilitati as I on Reteta.idComponenta=I.idComponenta1

where reteta.idPizza=@idPizza

union select I.idComponenta1 from Reteta inner join Incompatibilitati as I on Reteta.idComponenta=I.idComponenta2

where reteta.idPizza=@idPizza)

 

am incercat pentru SQL Server 2005. si pentru pizza capriciosa,(de exmplu) mi-a afisat: numeComponenta Carnati(e ok, dar nu doar componenta asta o are), gramaj 50(ok), pretComponentaPerKg 11(ok), valoare 0(nu stiu de ce, probabil nu calculeaza cu virgula? merge doar pentru impartiri exacte?)

Daca ai mai multe componente definite la o reteta si iti aduce doar o inregistrare, verifica sa ai si pretul introdus la ele.

Pentru valoarea 0 verifica ce tip de date ai la gramaj si la pretComponentaPerKg.

Edited by Paul Brahtl

Share this post


Link to post
Share on other sites

tipul de date e int, asa e, m-am lamurit.

intr-adevar, nu am pretul/kg al tututor componentelor.

am executat procedura de mai sus GetComponente, si merge, daca pentru idPizza=8 introduc in Retete componentele 2 si 15 (aflate in Incompatibilitati), dupa ce execut procedura imi afiseaza toate componentele, mai putin cea cu id 2 si 15. dar eu am introdus manual in Reteta aceste componente pentru pizza cu id-ul 8. dar fiind incompatibile, cum pot face sa nu ma lase sa introduc?

adica scriu:

idPizza - 8

componenta - 2

gramaj- 200

pe urmatorul rand

idPizza= tot 8

componenta - 15

gramaj - 150

si daca trec la randul urmator, pare totul ok, dar 2 si 15 sunt incompatibile, deci la introducere as vrea sa nu ma lase :P

e posibil?

Share this post


Link to post
Share on other sites

Restrictia din Incompatibilitati se implementeaza la nivelul interfetei de program, nu la nivelul bazei de date.

Pentru asta ti-am dat GetComponente, ca sa nu pui utilizatorului la dispozitie in lista de componente de adaugat la reteta, componente incompatibile cu cele deja adaugate.

Share this post


Link to post
Share on other sites

cum adaug la acel Query2 inca 2 coloane? una pentru costul manoperei pentru fiecare tip de pizza,si una cu suma dintre ultimele 2 coloane?(suma dintre valoare si cost manopera)?

am incercat dupa primul model, dar nu am reusit

am atasat fisierul, rename in .mdb

m-ai putea ajuta cu chestia asta?

mersi:)

Ex.txt

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×