Top, dit is hem inderdaad You saved my day, nu krijg inderdaad netjes de juiste namen te zien.quote:Op woensdag 25 februari 2015 21:43 schreef Aether het volgende:
[..]
Je hebt mogelijk kolommen met eenzelfde naam zodat in het resultaat er één (unieke naam) overblijft.
Je kunt het oplossen door alternatieve namen in de SELECT te gebruiken. Bijvoorbeeld:
[ code verwijderd ]
(Ik weet niet welke kolommen er verder voorkomen).
Die kans is aanwezig, maar soms moet je werken met wat je hebtquote:Op woensdag 25 februari 2015 21:04 schreef robin007bond het volgende:
[..]
Sorry, maar dan heb je je database waarschijnlijk niet optimaal ingericht.
http://appserver.io/quote:The objective of the project is to develop a multithreaded application server for PHP, written in PHP. Yes, pure PHP! You think we aren't serious? Maybe! But we think, in order to enable as many developers in our great community, this will be the one and only way. So with your help we hopefully establish a solution as the standard for enterprise applications in PHP environments.
Ik heb een beter idee. Leer Java.quote:Op donderdag 26 februari 2015 10:07 schreef Aether het volgende:
Stabiele versie 1.0.0 appserver.io uitgebracht.
[..]
http://appserver.io/
https://github.com/appserver-io/appserver
Je hebt met PHP te maken, elke idioot kan dat bedacht hebben (Ik heb de draad gelezen, het komt door mysql..)quote:Op woensdag 18 februari 2015 21:14 schreef mstx het volgende:
Ben sinds kort iets aan het maken met Symfony2/Doctrine. Dus ik heb in mijn database een TINYINT veld, zegt dat systeem dat het een boolean is. Welke idioot heeft dat bedacht?
Docterine zit fout m.i. De MySQL docs zeggen:quote:Op woensdag 18 februari 2015 21:37 schreef KomtTijd... het volgende:
[..]
Waarom maak je je uberhaupt druk om het database format? Laat dat lekker aan doctrine over. Die zal er waarschijnlijk een int van maken. Mocht je dat nog willen micro-optimaliseren naar een tinyint kun je dat doen na uitrol van je applicatie.
Dat wilt dus zeggen dat een tinyint(1) veld dus: 0 of niet 0 moet teruggeven, als je if ($bool) doet, gaat die logica vanzelf goed, daar hoeven ze geen "true" of "false" van de maken. En mocht je echt willen dat een tinyint een boolean is, dan moet je dat ergens in je schema kunnen opnemen.quote:A value of zero is considered false. Nonzero values are considered true
hoezo? ohhh omdat 0 === true is?quote:Op zaterdag 28 februari 2015 08:57 schreef Monolith het volgende:
Dat gaat je problemen opleveren wanneer je b.v. === true doet. De == operator in PHP is aardig verneukt.
Nee, omdat bijvoorbeeld 3 === true false oplevert en dergelijke checks dus falen als je de daadwerkelijke int waarden gebruikt.quote:Op zaterdag 28 februari 2015 10:38 schreef slacker_nl het volgende:
[..]
hoezo? ohhh omdat 0 === true is?
Doctorine moet gewoon niet naar het interne storageformaat kijken maar ergens in z'n schema files een definitie plaatsen van de kolom: boolean. Dat ie dat vervolgens mapped maar tinyint of supersmallint of weet ik het maakt dan niet uit. Null == false, idem voor 0 en de rest is true. Fixed. Dan kan je tinyint gebruiken in je DB en booleans zonder gezeik met true versnellingen.quote:Op zaterdag 28 februari 2015 10:45 schreef Monolith het volgende:
[..]
Nee, omdat bijvoorbeeld 3 === true false oplevert en dergelijke checks dus falen als je de daadwerkelijke int waarden gebruikt.
Doctrine zelf is gewoon een ORM framework. Volgens mij gebruikt betreffende user gewoon een tooltje om op basis van een database schema de bijbehorende code te kunnen genereren. Doctrine werkt net als allerhande andere ORM frameworks met annotaties, waarbij je ook types op kunt geven.quote:Op zaterdag 28 februari 2015 11:06 schreef slacker_nl het volgende:
[..]
Doctorine moet gewoon niet naar het interne storageformaat kijken maar ergens in z'n schema files een definitie plaatsen van de kolom: boolean. Dat ie dat vervolgens mapped maar tinyint of supersmallint of weet ik het maakt dan niet uit. Null == false, idem voor 0 en de rest is true. Fixed. Dan kan je tinyint gebruiken in je DB en booleans zonder gezeik met true versnellingen.
Doctrine gebruikt ook de interne definitie. Als je aangeeft dat een veld een boolean bevat, krijg je een kolom voor booleans. Maar als je vervolgens een database gebruikt die geen booleans ondersteunt (zoals MySQL) dan krijg je een automatische fallback naar het kleinste numerieke formaat, ofwel de tinyint. Dat staat ook in de documentatie.quote:Op zaterdag 28 februari 2015 11:06 schreef slacker_nl het volgende:
[..]
Doctorine moet gewoon niet naar het interne storageformaat kijken maar ergens in z'n schema files een definitie plaatsen van de kolom: boolean. Dat ie dat vervolgens mapped maar tinyint of supersmallint of weet ik het maakt dan niet uit. Null == false, idem voor 0 en de rest is true. Fixed. Dan kan je tinyint gebruiken in je DB en booleans zonder gezeik met true versnellingen.
Beetje ala
http://search.cpan.org/~g(...)ateColumn/Boolean.pm
En toch gaat het fout, want de beste man heeft true versnellingen ipv 6. Daarom zeg ik: Docterine zit fout, omdat ze ervanuit gaan dat een tinyint een booleanish value is.quote:Op zondag 1 maart 2015 00:21 schreef Light het volgende:
[..]
Doctrine gebruikt ook de interne definitie. Als je aangeeft dat een veld een boolean bevat, krijg je een kolom voor booleans. Maar als je vervolgens een database gebruikt die geen booleans ondersteunt (zoals MySQL) dan krijg je een automatische fallback naar het kleinste numerieke formaat, ofwel de tinyint. Dat staat ook in de documentatie.
Doctrine gaat uit van meersere databasedrivers. Dan krijg je compromissenquote:Op zondag 1 maart 2015 10:01 schreef slacker_nl het volgende:
[..]
En toch gaat het fout, want de beste man heeft true versnellingen ipv 6. Daarom zeg ik: Docterine zit fout, omdat ze ervanuit gaan dat een tinyint een booleanish value is.
Het lijkt mij dat er na de AND weer een P.id = personB_id moet komen, maar dan wel waar de P.eyeColor = "blue" is.quote:SELECT P.name
FROM Persons P, Likes L
WHERE P.id = L.personA_id AND ............
Aha, vraag me niet waarom maar ik dacht steeds Likes 2 keer te moeten joinen.quote:Op dinsdag 3 maart 2015 09:18 schreef KomtTijd... het volgende:
Selecten naar likes, persons 2x joinen.
1 2 3 | SELECT DISTINCT P1.name FROM Persons P1, Persons P2, Likes L WHERE P1.id = L.personA_id AND P2.id = L.personB_id AND P2.eyeColor ="blue" |
Je zou het zelf dus anders gedaan hebben bedoel je?quote:Op dinsdag 3 maart 2015 09:34 schreef KomtTijd... het volgende:
Ik blijf het een irritante notatie vinden die impliciete joins, maar zo kan ook inderdaad
Ik begrijp niet zo goed wat javascript er mee te maken heeft, het beste kan je het ID dan laten genereren in PHP. In SQL zou ik het niet zo snel doen.quote:Op dinsdag 3 maart 2015 10:01 schreef justme27 het volgende:
Hoi,
Kan ik mbv SQL ook nummers genereren die voldoen aan de 11-proef?
Ik zoek dus een manier om, op basis van bv een gegeven als data of tijd, een nummer te genereren die ook nog eens voldoet aan de 11-proef voor het kunnen verkrijgen van een geldig BSN-nummer.
Momenteel gebruik ik een statement wat, op basis van een view en vaste gegevens, nummers toevoegt om zo tot een getal van 6 cijfers te komen:
to_char( sysdate, 'WW')||lpad(pst_vnr_seq.nextval,4,0 )
Is het mogelijk of moet het echt met een apart javascript?
Je kunt stored procedures schrijven in Mysql.quote:Op dinsdag 3 maart 2015 10:01 schreef justme27 het volgende:
Hoi,
Kan ik mbv SQL ook nummers genereren die voldoen aan de 11-proef?
Ik zoek dus een manier om, op basis van bv een gegeven als data of tijd, een nummer te genereren die ook nog eens voldoet aan de 11-proef voor het kunnen verkrijgen van een geldig BSN-nummer.
Momenteel gebruik ik een statement wat, op basis van een view en vaste gegevens, nummers toevoegt om zo tot een getal van 6 cijfers te komen:
to_char( sysdate, 'WW')||lpad(pst_vnr_seq.nextval,4,0 )
Is het mogelijk of moet het echt met een apart javascript?
Javascript was een voorbeeld. En ook omdat ik geen PHP kan gebruiken; mijn selectie als invoertaal is beperkt tot:quote:Op dinsdag 3 maart 2015 10:03 schreef Scorpie het volgende:
[..]
Ik begrijp niet zo goed wat javascript er mee te maken heeft, het beste kan je het ID dan laten genereren in PHP. In SQL zou ik het niet zo snel doen.
Ik ben helaas geen ontwikkelaar dus dit onderdeel (ik heb ff gelezen) wordt al snel te ingewikkeld voor mij.quote:Op dinsdag 3 maart 2015 10:28 schreef Monolith het volgende:
[..]
Je kunt stored procedures schrijven in Mysql.
Wat is precies je vraag dan? Hoe je überhaupt een 11-proef nummer kunt genereren? Lijkt me dat hier wel rekenvoorbeelden voor te vinden zijn toch?quote:Op dinsdag 3 maart 2015 10:47 schreef justme27 het volgende:
[..]
Ik ben helaas geen ontwikkelaar dus dit onderdeel (ik heb ff gelezen) wordt al snel te ingewikkeld voor mij.
http://nl.wikipedia.org/wiki/Elfproefquote:Op dinsdag 3 maart 2015 11:43 schreef KomtTijd... het volgende:
[..]
Wat is precies je vraag dan? Hoe je überhaupt een 11-proef nummer kunt genereren? Lijkt me dat hier wel rekenvoorbeelden voor te vinden zijn toch?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | <?php try { $options = array( PDO::ATTR_PERSISTENT => true,//can help to improve performance PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, //throws exceptions whenever a db error occurs PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8' //>= PHP 5.3.6 ); $con= new PDO('mysql:host=localhost;dbname=dbname', 'dbuser', 'dbpass', $options); $sql= "SELECT * FROM A"; $stmt=$con->prepare($sql); $stmt->execute(); while($row = $stmt->fetch(PDO::FETCH_ASSOC)) { echo '<tr>'; echo '<td>' . $row['A'] . '</td>'; echo '<td>' . $row['B'] . '</td>'; echo '<td>' . $row['C'] . ' - ' . $row['D'] . '</td>'; echo '<td>' . $row['E'] . '</td>'; echo '</tr>'; } } catch(PDOException $e) { echo '<pre>'; echo 'Regel: '.$e->getLine(). '<br />'; echo 'Bestand: '.$e->getFile(). '<br />'; echo 'Foutmelding: '.$e->getMessage(); echo '</pre>'; } ?> |
1 2 3 4 | <?php $con= new PDO('mysql:host=localhost;dbname=dbname', 'dbuser', 'dbpass' , array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8')); ?> |
1 2 3 | <?php $stmt=$con->prepare($sql, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8')); ?> |
1 2 3 4 | <?php error_reporting(E_ALL); ini_set('display_errors', 1); ?> |
Gedaan. Geen foutmeldingen. Het wordt in zijn geheel niet meer weergegeven.quote:Op dinsdag 3 maart 2015 12:51 schreef Monolith het volgende:
Blanco pagina's betekenen doorgaans dat je een error krijgt die je niet zet.
Zet in ieder geval de error reporting / weergave even aan:
[ code verwijderd ]
quote:Op dinsdag 3 maart 2015 13:24 schreef Chandler het volgende:
Kan het zijn dat je de data al verkeerd hebt opgeslagen in de database?? heb ik ook wel eens gehad...
Thanks, zal het zo doornemen!quote:Op dinsdag 3 maart 2015 13:27 schreef raptorix het volgende:
MUST READ, REPEAT, MUST READ!
http://www.joelonsoftware.com/articles/Unicode.html
Heb je de PHP-file zelf ook in UTF-8 opgeslagen? Kan zijn dat je ook nog even een meta-tag moet toevoegen in de pagina waarin je dit weergeeft.quote:Op dinsdag 3 maart 2015 13:20 schreef zarGon het volgende:
[..]
Gedaan. Geen foutmeldingen. Het wordt in zijn geheel niet meer weergegeven.
Ervoor:
[ afbeelding ]
Erna:
[ afbeelding ]
1 2 3 | SELECT DISTINCT P1.name FROM Persons P1, Persons P2, Likes L WHERE P1.id = L.personA_id AND P2.id = L.personB_id AND P2.eyeColor ="blue" |
Als het goed is wel, zal ik vanavond naar kijken. Thanks.quote:Op dinsdag 3 maart 2015 13:53 schreef robin007bond het volgende:
[..]
Heb je de PHP-file zelf ook in UTF-8 opgeslagen? Kan zijn dat je ook nog even een meta-tag moet toevoegen in de pagina waarin je dit weergeeft.
Waarom dat?quote:Op dinsdag 3 maart 2015 14:29 schreef DannyDeko het volgende:
[ code verwijderd ]
Om even terug te komen op dit. Hoe verander ik dit nu zodat nu alleen de persoon wordt weergegeven die minstens twee personen met blauwe ogen aardig vindt? Volgens mij is het nog niet de bedoeling om COUNT te gebruiken, dus hoe kan ik dit dan oplossen?
I know, ik ben ook niet op zoek naar directe antwoorden. (;quote:Op dinsdag 3 maart 2015 15:29 schreef Monolith het volgende:
Dit is geen huiswerktopic.
maar om je een hint te geven, je moet in ieder geval 3x iets uit Persons selecteren in dit geval.
Omdat het per onderdeel wordt uitgelegd ( voor zover dat wordt gedaan, documentatie is echt minimaal) en daarna enkele opgaven gegeven worden. En HAVING en COUNT komen pas later aan de orde.quote:Op dinsdag 3 maart 2015 15:32 schreef zarGon het volgende:
[..]
Waarom dat?
De simpelste oplossing lijkt mij eerst GROUP BY en een COUNT(). Vervolgens een select daaromheen met een WHERE en COUNT() > 1.
Een HAVING is makkelijker, maar ook dan heb je een COUNT.
Lukt het hiermee?
Wat mag je nu wel gebruiken dan? Er moet op de een of andere manier toch een telling plaatsvinden...quote:Op dinsdag 3 maart 2015 15:43 schreef DannyDeko het volgende:
Omdat het per onderdeel wordt uitgelegd ( voor zover dat wordt gedaan, documentatie is echt minimaal) en daarna enkele opgaven gegeven worden. En HAVING en COUNT komen pas later aan de orde.
Ik ga er weer even mee stoeien. Alvast bedankt
Ik heb het maar gewoon gebruikt, want zoals je al zei zal er toch op een manier geteld moeten worden.quote:Op dinsdag 3 maart 2015 15:46 schreef zarGon het volgende:
[..]
Wat mag je nu wel gebruiken dan? Er moet op de een of andere manier toch een telling plaatsvinden...
1 2 3 4 5 | SELECT DISTINCT P1.name FROM Persons P1, Persons P2, Likes L WHERE P1.id = L.personA_id AND P2.id = L.personB_id AND P2.eyeColor ="green" GROUP BY P1.name HAVING COUNT(P2.eyeColor = "green") > 1 |
Je distinct is onnodig, je hebt GROUP BY al.quote:Op dinsdag 3 maart 2015 16:08 schreef DannyDeko het volgende:
[..]
Ik heb het maar gewoon gebruikt, want zoals je al zei zal er toch op een manier geteld moeten worden.
[ code verwijderd ]
Zo is ie valid.
Maar zou je me kunnen uitleggen waarom " GROUP BY P1.name " hier nodig is?
1 2 3 4 5 6 7 8 9 | SELECT P1.Name, COUNT(L.personA_id) AS NrOfLikes FROM Likes L INNER JOIN Persons P1 ON L.personA_id = P1.id INNER JOIN Persons P2 ON L.personB_id = P2.id WHERE P2.eyeColor = 'green' GROUP BY P1.Name HAVING COUNT(L.personA_id) > 1 |
Aha, duidelijk. Thanks voor de toelichting!quote:Op dinsdag 3 maart 2015 16:10 schreef zarGon het volgende:
[..]
Je distinct is onnodig, je hebt GROUP BY al.
En GROUP BY is nodig door de HAVING.
Verder is je HAVING niet goed, want je wil het aantal keren dat personA_id voorkomt tellen. (Eigenlijk de naam, maar een naam is natuurlijk niet uniek.)
[ code verwijderd ]
Alhoewel, ik test het op TSQL; dat wijkt ietwat af van MySQL. Draait jouw code met de HAVING die jij hebt?!
Wat meer info over de HAVING: http://en.wikipedia.org/wiki/Having_%28SQL%29.quote:Op dinsdag 3 maart 2015 16:18 schreef DannyDeko het volgende:
[..]
Aha, duidelijk. Thanks voor de toelichting!
Ik zie (en snap) nu idd ook dat de having verkeerd is.
En ja het draaide ook al met de code die ik poste, dus ook inclusief de overbodige distinct.
1 2 3 4 5 6 7 | <?php /** * @ORM\ManyToMany(targetEntity="ArticleTag", inversedBy="articles") * @ORM\JoinTable(name="article_tags") **/ private $articleTags; ?> |
1 2 3 4 5 6 | <?php /** * @ORM\ManyToMany(targetEntity="Article", mappedBy="articleTags") **/ private $articles; ?> |
1 2 3 4 5 6 7 | <?php $qb = $em->createQueryBuilder(); $qb->select('articletag, (SELECT count(article.id) FROM HVNewsBundle:Article AS article WHERE article.articleTags = articletag.id) AS mycount') ->from('HVNewsBundle:ArticleTag', 'articletag') ->orderBy('mycount', 'DESC'); $articleTags = $qb->getQuery()->getResult(); ?> |
Dus eigenlijk gewoon een kolommetje erbij met 'views' en die dan per actie ++ of -1 laten berekenen?quote:Op vrijdag 6 maart 2015 18:03 schreef KomtTijd... het volgende:
"foutmeldingen" ja daar heb ik ook wel eens last van
denk dat je de count moet doen op je koppeltabel.
article.articletags is een arraycollection van tags, dus daar kun je niet zomaar een WHERE op doen.
Ja dat was ook eigenlijk mijn vraag, hoe ik dat het beste doe, aangezien ik nu talloze combinaties geprobeerd heb en SQL/DQL niet mijn sterkste kant isquote:Op vrijdag 6 maart 2015 18:35 schreef KomtTijd... het volgende:
Nee je kunt toch in je koppel tabel tellen hoeveel artikelen een bepaalde tag heeft of vice versa? Weet FF niet of je makkelijk kunt querien naar de koppeltabel met doctrine maar dat lijkt me wel de manier.
SELECT COUNT(tag_id) FROM articles_tags GROUP BY article_idquote:Op vrijdag 6 maart 2015 19:39 schreef henrivo het volgende:
Kortgezegde wil ik dus van elk bestaande tag berekenen hoeveel articles er aan gekoppeld zitten. Heeft iemand enig idee hoe?
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |