SQL query distinct voorkeur

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

TNG -

TNG -

01/11/2012 12:19:19
Quote Anchor link
Hey, Heren.

ik probeer een query te schrijven wat alle rijen uit een tabel haalt waar een kolom uniek is maar er word gekeken naar een andere column als voorkeur.

dus bijvoorbeeld ik heb 4 rijen waar 1 daarvan niet uniek is maar de taal engels heeft.

de bedoeling is als ik alle kolomen ophaal dat ik dan alle Engelse kolomen krijg maar zodra die niet bestaat hij de zelfde rij pakt in een andere taal opgegeven taal.

iemand enig idee hoe ik dit voor elkaar krijg?
 
PHP hulp

PHP hulp

24/11/2024 04:13:38
 
Ivo Breeden

Ivo Breeden

01/11/2012 13:24:28
Quote Anchor link
Ja dat kan zeer zeker, maar je vraagstelling is erg abstract. Kun je een beschrijving van je tabel geven en een voorbeeld van wat je als output verwacht?
 
TNG -

TNG -

01/11/2012 14:32:03
Quote Anchor link
invoer:

-------------------------------------------------------------
|1 | title | nl | | |
-------------------------------------------------------------
|2 | title | nl | | |
-------------------------------------------------------------
|3 | title | nl | | |
-------------------------------------------------------------
|3 | title | en | | |
-------------------------------------------------------------
|4 | title | nl | | |
-------------------------------------------------------------
|4 | title | be | | |
-------------------------------------------------------------


Wat ik nodig heb als ik het liefst de taal EN wil maar de standaard taal is NL:


-------------------------------------------------------------
|1 | title | nl | | |
-------------------------------------------------------------
|2 | title | nl | | |
-------------------------------------------------------------
|3 | title | en | | |
-------------------------------------------------------------
|4 | title | nl | | |
-------------------------------------------------------------
 
Frank Nietbelangrijk

Frank Nietbelangrijk

01/11/2012 14:47:09
Quote Anchor link
Je zou het met order by kunnen doen zat ik te denken maar dan moet 'nl' misschien '_nl' worden zodat deze bovenin komt te staan in de alfabetische volgorde...

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php

$t
= 'en';
$id = 2;

$qry = "SELECT * FROM tabelnaam WHERE id=$id AND (taal='$t' OR taal='nl') ORDER BY '$t'";

?>
Gewijzigd op 01/11/2012 15:03:21 door Frank Nietbelangrijk
 
TNG -

TNG -

01/11/2012 14:53:58
Quote Anchor link
dat is totaal niet wat ik bedoel.

ik heb unieke rijen nodig waar bij een voorkeur taal is aangegeven en als die niet bestaat terug valt op de standaard taal.
Gewijzigd op 01/11/2012 14:55:06 door TNG -
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

01/11/2012 15:20:24
Quote Anchor link
Ik neem aan dat die id's uit een andere tabel komen?
Dan kan je met een LEFT JOIN en COALESCE dat bereiken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
SELECT
    i.item_date,
    COALESCE(en.title, nl.title) AS title
FROM
    items AS i
LEFT JOIN
    details AS en
    ON
        i.item_id = en.item_id
    AND
        en.lang_id = 'en'
LEFT JOIN
    details AS nl
    ON
        i.item_id = nl.item_id
    AND
        nl.lang_id = 'nl'
WHERE
    i.item_date => CURRENT_DATE()

met COALESCE wordt en.title geslecteerd als deze niet leeg is, anders nl.title
Gewijzigd op 01/11/2012 15:21:58 door Ger van Steenderen
 
TNG -

TNG -

01/11/2012 15:24:55
Quote Anchor link
Hey ger,

dit is inderdaad de goede richting op, maar er wordt nog wat meer info bij iedere rij opgeslagen.
dus ik heb niet alleen de title nodig maar eigenlijk de hele rij.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

01/11/2012 15:46:20
Quote Anchor link
Is de gehele rij taal afhankelijk? Je kunt die COALESCE op elke kolom toepassen.
Ik weet het lijkt omslachtig, maar het is eigenlijk op de manier zoals het nu is, de enige nog redelijk simpele oplossing.

Edit:

Ik denk nog steeds sneller dan dat ik type (gelukkig maar, want dat gaat niet zo snel)
Gewijzigd op 01/11/2012 15:49:56 door Ger van Steenderen
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.