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.
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?
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...
<?php
$t = 'en';
$id = 2;
$qry = "SELECT * FROM tabelnaam WHERE id=$id AND (taal='$t' OR taal='nl') ORDER BY '$t'";
Ik neem aan dat die id's uit een andere tabel komen?
Dan kan je met een LEFT JOIN en COALESCE dat bereiken:
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
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.
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)
[/edit]