AMcoder - javascript, python, java, html, php, sql

Երկու աղյուսակների միացում՝ սյունակի արժեքի հիման վրա

Ես պետք է միացնեմ տարբեր աղյուսակներ, եթե պայմանը բավարարում է առաջին միացման ժամանակ, այնպես որ, եթե առաջին միացման սյունակն ունի 1 արժեք, ապա միացում կատարեք մեկ աղյուսակի հետ, իսկ եթե արժեքը ունի 2, ապա միացումը կատարեք մեկ այլ աղյուսակի հետ, նման բան, բայց MySQL-ը սխալ է տալիս

SELECT col1, col2, col3,...,col8
FROM table1 AS tb1
INNER JOIN table2 AS t2 ON tb1.id = tb2.id
INNER JOIN table3 AS t3 ON tb2.id = tb3.id
CASE
    WHEN tb2.col2 = 1   THEN INNER JOIN table4 ON id = col1
    WHEN tb2.col2 = 2   THEN INNER JOIN table5 ON id = col3
    WHEN tb2.col2 = 3   THEN INNER JOIN table6 ON id = col5
END    
WHERE tb1.id = 13;
29.09.2020


Պատասխանները:


1

case արտահայտությունը վերադարձնում է արժեք և չի կարող օգտագործվել կոդի պայմանական կատարման համար: Փոխարենը կատարեք LEFT JOINs:

SELECT col1, col2, col3,...,col8
FROM table1 AS tb1
INNER JOIN table2 AS t2 ON tb1.id = tb2.id
INNER JOIN table3 AS t3 ON tb2.id = tb3.id
LEFT JOIN table4 ON id = col1 and tb2.col2 = 1
LEFT JOIN table5 ON id = col3 and tb2.col2 = 2
LEFT JOIN table6 ON id = col5 and tb2.col2 = 3
WHERE tb1.id = 13;
29.09.2020

2

Դուք կարող եք դա անել LEFT միացումներով և ֆիլտրով WHERE կետում.

SELECT col1, col2, col3,...,col8
FROM table1 AS tb1
INNER JOIN table2 AS tb2 ON tb1.id = tb2.id
INNER JOIN table3 AS tb3 ON tb2.id = tb3.id
LEFT JOIN table4 ON id = col1 AND tb2.col2 = 1
LEFT JOIN table5 ON id = col3 AND tb2.col2 = 2
LEFT JOIN table6 ON id = col5 AND tb2.col2 = 3
WHERE tb1.id = 13 AND tb2.col2 IN (1, 2, 3);

Նկատի ունեցեք, որ բոլոր սյունակները պետք է որակավորվեն համապատասխան աղյուսակի անունով/փոխանունով:

29.09.2020
Նոր նյութեր

Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..