DISTINCT uit meerdere tabellen
Ik heb de volgende QUERY
$query_names = mysql_query("select DISTINCT agentnaam FROM tba ORDER BY agentnaam ASC");
$agenttot = mysql_fetch_array($query_names))
Echter er zijn 2 tabellen waar agentnaam in kunnen staan, nml afgehandeld
Hoe kan ik Distinct gebruiken om in beide alle unieke namen te laten selecteren maar wat wel als variable terugkomt zodat ik die kan echoen als:
$ad = $agenttot['agentnaam'];
Iemand een idee? Ik zag mogelijkehden met UNION of de tabelnamen gewoon scheiden met komma, maar dat werkte bij mij niet.
Tip: Stap over op Mysqli. Mysql is verouderd en zal uit toekomstige PHP Versies (6.0) verdwijnen.
Informatie over JOINS:
http://www.w3schools.com/sql/sql_join.asp
Overstappen naar een andere database heb ik niet in de hand. Is provider afhankelijk of ze het aanbieden of niet.
Toevoeging op 13/10/2014 15:34:11:
O, ik denk dat ik mijn vraag fout had. Ik bedoel niet 2 tabellen maar 2 kolommen :)
Geef eens een voorbeeld van je tabel?
Zoiets, of moet ik het anders voorstellen?
Maar dat is voorlopig niet mijn probleem. Het vastlopen in PHP wel ;)
Toch bedankt voor je info daarover. Ik zal het in ieder geval bekijken voor de toekomst.
Tabel showen gaat hier niet lukken... te gevoelige info.
Het zijn in ieder geval 2 kolommen waar namen in staan maar niet per se dezelfde handelingen verrichten. Op die manier wil ik statistieken maken. Maar ik moet dan wel alle namen uit die 2 kolommen hebben om te echoen.
agentnaam afgehandeld_door
jan 1 piet 1
chris 2 jan 1
flip 3 flip 3
http://stackoverflow.com/questions/192924/sql-distinct-for-2-fields-in-a-database
Even googelen, dan vind je het antwoord zo.
$ad = $agenttot['agentnaam'];
$ad .= $agenttot['afgehandeld_door'];
gaat ook niet werken want dan krijg je toch dubbelen.
Toevoeging op 13/10/2014 16:16:36:
$query_names = mysql_query("select count(*) FROM (select distinct agentnaam, afgehandeld_door from tba) group by agentnaam");
of niets
Toevoeging op 13/10/2014 16:17:06:
en jawel, ik heb wel ID... dit zijn echter de enige kolommen die er nu toe doen :)
Toevoeging op 13/10/2014 16:20:41:
ook deze geeft een lege output:
$query_names = mysql_query("select agentnaam, count(*) FROM (select distinct agentnaam, afgehandeld_door from tba) group by agentnaam");
Toevoeging op 13/10/2014 16:34:17:
ps, ik ben nu vrij, ga er morgen weer mee verder. Bedankt voor meedenken tot nu toe. Hopelijk heb je ondertussen een verlossing voor me :D
Gewijzigd op 13/10/2014 16:03:12 door E. de Groot
Dat werkt ook niet want dan moet je nog uitlezen uit 2 variabelen... hoe kun je dat dan in 1 krijgen?
Je kunt hem eventueel aanpassen naar
Je krijgt dan de kolom naam terug en die kan je als variabele gebruiken.
Probeer het maar eens uit op de sql commando regel of in PHPadmin.
Met een UNION juist niet. In het voorbeeld van Jan krijg je alle namen netjes in 1 kolom terug.
$ad = $agenttot['agentnaam'];
$ad = $agenttot['afgehandeld_door'];
het lukt mij alleen op die manier.. en niet alleen door: $ad = $agenttot['agentnaam'];
Toevoeging op 14/10/2014 10:12:14:
Oh, ik zie het al... as naam... die ff gemist.
Ja... het gaat de goede kant op.. ik krijg wel een rare output. Helemaal fout kan ik niet zeggen maar helemaal goed ook nog niet... ff uitspitten wat er nu nog mis is...
Toevoeging op 14/10/2014 10:19:00:
Ah... ik zie het al. Er zijn velden leeg. Agentnaam zal nooit leeg zijn maar Afgehandeld_door kan wel leeg zijn.
Hoe kan ik die eruit filteren?
Toevoeging op 14/10/2014 10:35:14:
Ik heb nu dit:
$query_names = mysql_query("SELECT agentnaam AS naam FROM tba UNION SELECT afgehandeld_door AS naam FROM tba WHERE afgehandeld_door != NULL");
Helaas mis ik wel namen die wel voorkomen in afgehandeld_door
Toevoeging op 14/10/2014 10:46:05:
ingewikkeld hoor...
oke, die legen namen zijn denk ik wel goed alleen de naam wordt niet in AS NAAM gezet...
Want de overige data wordt wel uitgelezen zo ver ik nu kan achterhalen.
Toevoeging op 14/10/2014 12:30:59:
wow... yes! het is gelukt! :)
Paar foutjes nog elders gevonden en nu is het klaar... top!!
@jan, dat was idd de oplossing. Bedankt!!
De rest ook bedankt voor meedenken enzo!
Dan zie je duidelijk wat er terugkomt uit je sql.
Misschien dat dat helpt om je vragen op te lossen.
Weet je zeker dat afgehandeld_door NULL is, misschien is het gewoon leeg. Probeer dit eens:
maar het is al opgelost... het werkt nu zoals ik wilde :)
Die var_dump kende ik nog niet... dus das een welkome tip again :)
dit is nu de query die doet wat ik wilde:
$query_names = mysql_query("SELECT agentnaam AS naam FROM tba UNION SELECT afgehandeld_door AS naam FROM tba WHERE afgehandeld = 1");
En de blanco namen kwam omdat ik Naam niet echode maar nog de oude variabele.
Quote:
WHERE afgehandeld_door != NULL
Let op: als je met null-waardes gaat werken, moet je altijd IS NULL of IS NOT NULL gebruiken.
Quote:
<> is volgens mij hetzelfde als =
Dat is alleen wanneer je vergelijkt met NULL. Een vergelijking met NULL levert altijd de waarde NULL/false op.
Gewijzigd op 14/10/2014 13:17:41 door Willem vp
Maar het werkt, daar gaat het om :)
Thnx!
Database-technisch zou ik het logischer vinden als dat wel het geval was. ;-)
bijschaven e.d. komt nog wel een x ;)