Ingen verdier i to tabeller spørring (SQL og Coldfusion)

stemmer
0

Jeg har et spørsmål som har en liste over grunnverdier og en liste over språk verdier. Hver verdi har en nøkkel som passer til den andre. Base Verdiene lagres i en tabell og språk verdiene i en annen. Mitt problem er at jeg trenger å få alle samsvarende basisverdier fjernet fra QUERY unntak av én. Da jeg eksportere dette søket i et Excel-regneark (jeg kan gjøre denne delen fine) og tillater brukeren å redigere språk verdier.

Når brukeren redigerer og / eller setter inn nye språk verdier, jeg trenger å oppdatere databasen med unntak nå skriver over eventuelle samsvarende verdier i databasen (som de som ble fjernet første gang).

I enkelhet, betaler kunden for oversettelser, og hvis jeg kan generere et ark som har færre oversettelser trengs (som fraser som dukker opp igjen ofte) så de kan spare penger, derfor prosjektet til å begynne med. Jeg innser ulempen er at det ikke er en ekte lenket liste, der alle samsvarende verdier alle tilhører en rad i språket tabellen (som ville ha vært lett). I stedet, det er flere verdier som er identiske som trenger å bli oppdatert som beskrevet ovenfor.


Ja, jeg er forvirret på det som er grunnen til at det kan virke litt vag. Her er et eksempel:

Table 1
Item Description1
Item Description2
Item Description3
Item Description2
Item Description2
Item Description4
Item Description5
Item Description6
Item Description3

Table 2
Item Desc in other Language1
Item Desc in other Language2
Item Desc in other Language3  (blank)
Item Desc in other Language3
Item Desc in other Language4
Item Desc in other Language5
*blank*

Ønskede resultat (når spørres)

Tabell 1 Element Beskrivelse1 Pos Pos Beskrivelse2 Description3 Pos Pos Description4 Description5 Element Description6

Table 2
Item Desc in other Language1
Item Desc in other Language2
Item Desc in other Language3 (filled by matching row in Table 2)
Item Desc in other Language4
Item Desc in other Language5
Item Desc in other Language6 (blank, returned as empty string)

Brukeren gjør deres modifikasjoner, herunder å sette inn data i tomme rekker (som rad 6 for språket) Deretter reuploads:

Table 1
Item Description1
Item Description2
Item Description3
Item Description2
Item Description2
Item Description4
Item Description5
Item Description6
Item Description3

Table 2
Item Desc in other Language1
Item Desc in other Language2
Item Desc in other Language3  (now matches row below)
Item Desc in other Language3
Item Desc in other Language4
Item Desc in other Language5
Item Desc in other Language6  (new value entered by user)

Det er også en ressurs nøkkel som passer hver Element Beskrivelse til en enkelt Sak Desc i andre språk. Den eneste gangen de noen gang kommer til å se hverandre er i løpet av denne oversettelsesprosessen, alle andre ganger verdiene kan være forskjellige, så ressurs nøklene ikke kan bare endres til alle peker på en oversettelse permanent.

Jeg bør også legge til, det bør ikke være noen endring av strukturen i tabellene eller fjerne rader av tabellen.


Ok, her er en oppdatert revisal av hva jeg ønsker spørringen å gjøre, men tydeligvis ikke gjør siden jeg faktisk trenger verdiene i den kombinerte tabellen:

SELECT pe.prodtree_element_name_l, rs.resource_value, pe.prodtree_element_name_l_rk   
FROM prodtree_element pe
        LEFT JOIN resource_shortstrings rs
            ON pe.prodtree_element_name_l_rk = rs.resource_key
        WHERE rs.language_id = '5'
            AND pe.prodtree_element_name_l <> ''
        GROUP BY pe.prodtree_element_name_l
Publisert på 15/10/2008 klokken 15:44
kilden bruker
På andre språk...                            


3 svar

stemmer
0

Hvis du trenger å fjerne alle kampene unntatt en, hvorfor ikke slette alle samsvar ... kamper ... vi trenger bedre vilkår ... og deretter sette den riktige. EG, hvis du trenger å oppdatere kampene mellom elementer 12 og 13 i basepar bordet, gjøre noe sånt

delete from matchtable where (id1 = 12 and id2 = 13) or (id1 = 13 and id2 = 13);
insert into matchtable (id1, id2) values (12, 13);

Jeg kan oversimplifying, men din beskrivelse synes vag steder.

Svarte 15/10/2008 kl. 16:09
kilden bruker

stemmer
1

HRM, fortsatt ikke reell tydelig på hva problemet virkelig er, men la meg gi den en gå.

bord:

BASE_VALUES
------------------
BASE_VALUE_RK
BASE_VALUE_NAME

RESOURCE_VALUES (disse oversettelsene, jeg gjetter)
-----------------------
RESOURCE_KEY
RESOURCE_LANGUAGE_ID
RESOURCE_VALUE

Du ønsker å hente en basisverdi, og alle tilhørende omregnings verdier som samsvarer med basisverdi, eksportere dem til Excel, og deretter re-laste dem via en oppdatering (tror jeg).

SQL for å velge ut data:

VELG bv.BASE_VALUE_RK, rv.RESOURVE_VALUE
  Fra BASE_VALUE bv, RESOURCE_VALUE rv
 HVOR bv.BASE_VALUE_RK = rv.RESOURCE_KEY
   OG rv.resource_language_id = '5'
 ORDER BY 1;

Det vil gi deg:

1234 Foo
1235 Bar
1236 Baz

Eksportere det å utmerke seg, og få det tilbake med oppdateringer:

1234 Goo
1235 Car
1236 Spaz

Du kan så si:

UPDATE RESOURCE_VALUES
   SET RESOURCE_VALUE = value_from_spreadsheet
 HVOR RESOURCE_KEY = key_from_spreadsheet

Jeg kan være veien utenfor basen på denne fyren, så gi meg beskjed, og hvis du kan gi litt mer detaljer, kan jeg være i stand til å score nærmere mark.

Jubel!

Svarte 15/10/2008 kl. 18:26
kilden bruker

stemmer
0

Hei takk for at oppdatering!

Ser på det og legge det inn i et tidligere innlegg jeg endelig kom opp med dette:

<cfquery name="getRows" datasource="XXXX">
    SELECT pe.prodtree_element_name_l, MAX(rs.resource_value) AS resource_value
    FROM prodtree_element pe
    LEFT JOIN resource_shortstrings rs
        ON pe.prodtree_element_name_l_rk = rs.resource_key
    WHERE rs.language_id = '5'
        AND pe.prodtree_element_name_l <> ''
    GROUP BY prodtree_element_name_l
</cfquery>

Jeg innså at jeg ikke trenger en bestemt resource_value, bare noen som var der inne. Jeg har også innsett at jeg ikke trenger ressursen nøkkelen i det hele tatt utenfor spørringen. Oppdateringen vil oppdatere alle matchende grunnverdiene uansett, så jeg ikke virkelig trenger ressursen nøkkelen tross alt, som tillot meg å bruke GROUP BY.

Tok en stund, beklager for dårlig forklaring, men dette er det! :) Takk for all hjelp.

Svarte 15/10/2008 kl. 18:59
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more