26. marts 2003 - 13:08Der er
17 kommentarer og 4 løsninger
Tricky sql
Jeg sidder med en tricky select statement. Som jeg ikke kan få til at virke
Jeg har følgende senarie: - En tabel hvor i der er en række produkter - Nogle af produkterne er ens med undtagelse af produktID - Se et eksempel på en tabelsindhold
jeg er ikke 100% sikker på jeg forstår havd det er du vil...
Men jeg forstår det sådan at du vil have et produkt trukket ud der har de kriterier... Hvorfor tjekker du ikke bare for om id er det samme i din select ?? "select * from tabel where produktid = " & request("produktid") Hvis det er tekst så: "select * from tabel where produktid = '" & request("produktid") & "'"
>> Ellebaek Jeg kan ikke gøre som du nævner da jeg lige netop vil lave en select statement hvor jeg vælger en række forskellige elementer ud. Det som du foreslår et at jeg laver en udvælgelse direkte på ProduktID.
>> Oasen Hvis jeg gør som du foreslår, så får jeg jo ikke splittet mine produkterIDer fra. Der er forskellige produktIDer til hvert produkt, så derfor vil jeg får samme resultat som hvis jeg slet ikke havde brugt distinct
>> Oasen Yep jeg har prøvet, problemet med Group By er at man ikke bare kan lave group by på et felt hvis du skal have 4 ud. Du bliver nød til at lave group by på alle felter.
Jeg må jo nok også lige erkende at tingene ikke er så simple som i eksemplet Det jeg sidder med er noget mere kompleks, men jeg har lavet eksemplet for at simplificere mit problem
>> carpediem Problemet med den sætning du fyrer af her: Select Distinct Produktnavn, MIN(ProduktID) AS ProduktID, Land, Pris From Tabel GROUP BY Produktnavn, Land, Pris
Er at du jo godt nok laver en min(ProduktID) men det er jo Min på alle produktIDer. Ergo bliver resultatet følgende: | PRODUKTNAVN | PRODUKTID | LAND | PRIS | | Handsker | 1 | DK | 1000 | | Hue | 1 | DK | 1200 |
Jeg har netop lige forsøgt, at lave et eksempel magen til dit. Og følgende streng giver det rigtige resultat: SELECT DISTINCT Produktnavn, MIN(ProduktID) AS ProduktID, Land, Pris FROM test GROUP BY Produktnavn, Land, Pris
Her er den kode jeg har prøvet i det virkelige live:
SELECT P.title, P.DESTINATION_CODE, TO_CHAR(P.modified_time,'dd-mm-rrrr'), TO_CHAR(P.PUBLISH_START_DATE,'dd-mm-rrrr'), TO_CHAR(P.PUBLISH_END_DATE,'dd-mm-rrrr'), TO_CHAR(P.valid_from,'dd-mm-rrrr'), TO_CHAR(P.valid_to,'dd-mm-rrrr'), P.duration, min(p.product_id) as mProductID, P.price_normal, DK, P.VALID_FROM FROM product P, Geography G WHERE P.SUPPLIER_ID = 2278 AND P.DESTINATION_CODE = G.TM_CODE AND p.IS_HISTORY = 0 AND p.MANAGEMENT_SOURCE = 'MANUAL' AND P.CONCEPT_ID=2 AND P.CONCEPT_ID=P.SUPPLIER_CONCEPT AND P.IS_ON_AUCTION=0 AND P.IS_APPROVED=1 AND p.IS_PRICE_REDUCED = 0 AND sysdate >= P.PUBLISH_START_DATE AND sysdate <= P.PUBLISH_END_DATE GROUP BY p.title, P.DESTINATION_CODE,P.modified_time,P.PUBLISH_START_DATE,P.PUBLISH_END_DATE,P.valid_from,P.valid_to,P.duration,P.price_normal,DK,P.VALID_FROM
Jeg har selv lavet en løsning på problemet. Jeg løste det med subselect som amvig nævnte...
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.