helaas nietquote:Op donderdag 27 maart 2008 17:02 schreef ursel het volgende:
[..]
SELECT meldingen.*, user.naam FROM meldingen LEFT JOIN user where meldingen.van_id = user.id
De A en B zijn alleen maar voor korte notatie gebruik. Zeker als je maar een aantal velden getoont wilt hebben is het niet handig om elke keer meldingen ervoor te moeten zetten.
De punt is een koppel teken. Probeer het eens met de spaties ertussenuit.quote:Op donderdag 27 maart 2008 17:04 schreef qu63 het volgende:
[..]
helaas niet
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'where meldingen . van_id = user . id
LIMIT 0, 30' at line 1
zo heb ik em ook ingeveord, phpmyadmin plakt de spties er tussen bij de foutmeldingquote:Op donderdag 27 maart 2008 17:13 schreef ursel het volgende:
[..]
De punt is een koppel teken. Probeer het eens met de spaties ertussenuit.
quote:Op donderdag 27 maart 2008 17:14 schreef slacker_nl het volgende:
en is het niet
FROM meldingen LEFT JOIN user ON meldingen.van_id = user.id
zo krijg ik wel resultaten, maar dan ook alle resultaten. Ik wil juist alleen de meldingen laten zien voor deze gebruikerquote:Op donderdag 27 maart 2008 17:13 schreef slacker_nl het volgende:
select meldingen.*, user.name from meldingen, user where meldingen.van_id = user.id
hmz, nogniet helemaalquote:Op donderdag 27 maart 2008 17:14 schreef slacker_nl het volgende:
en is het niet
FROM meldingen LEFT JOIN user ON meldingen.van_id = user.id
1 2 3 4 5 6 7 | 1 1 2 Titel Ongelezen Ongelezen 1206710100 1 Jantje 1 1 2 Titel Ongelezen Ongelezen 1206710100 1 Hiephoi! 2 2 1 Titel Gelezen Gelezen 1206710100 1 NULL 3 1 2 Titel Gelezen Gelezen 1206621950 1 Jantje 3 1 2 Titel Gelezen Gelezen 1206621950 1 Hiephoi! 4 2 1 Titel Ongelezen Ongelezen 1206621950 0 NULL |
1 2 3 4 5 | 1 1 2 Titel Ongelezen Ongelezen 1206710100 1 2 2 1 Titel Gelezen Gelezen 1206710100 1 3 1 2 Titel Gelezen Gelezen 1206621950 1 4 2 1 Titel Ongelezen Ongelezen 1206621950 0 |
1 2 3 | 1 Jantje qu63 WEG WEG WEG 2 Hiephoi! admin WEG WEG WEG |
1 2 3 4 5 6 | $q = "SELECT * FROM meldingen"; $res=mysql_query($q); $berichten = mysql_fetch_array($res); print_r($berichten); ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | ( [0] => 1 [id] => 1 [1] => 1 [van_id] => 1 [2] => 2 [voor_id] => 2 [3] => Titel Ongelezen [titel] => Titel Ongelezen [4] => Ongelezen [inhoud] => Ongelezen [5] => 1206710100 [datum] => 1206710100 [6] => 1 [gelezen] => 1 ) |
ja sorry, ik heb tot nu toe in mijn hele leven 3 query's gebouwdquote:Op donderdag 27 maart 200817:03 schreef ursel het volgende:
[..]
Waarom dubbele DB verbinding als het in 1 query ook kan??
Het haalt zowel de associatieve array op als de nummerieke. Je moet even specificeren welke wordt weergegevenquote:Op donderdag 27 maart 2008 18:54 schreef qu63 het volgende:
Ik snap er nog minder van nu
sql-query:
[ code verwijderd ]
Er staan 4 rijen in mn tabel, maar de enige output is dit:
[ code verwijderd ]
Wat gaat er nou allemaal fout hier
1 2 3 4 5 6 7 8 9 10 | $q = "SELECT * FROM meldingen"; $res=mysql_query($q); $i=0; while($berichten = mysql_fetch_array($res)) { print $berichten[$i]; $i++; } ?> |
Dan nog krijg ik maar 1 rij te zien.quote:Op donderdag 27 maart 2008 19:08 schreef beerten het volgende:
[..]
Het haalt zowel de associatieve array op als de nummerieke. Je moet even specificeren welke wordt weergegeven
[ code verwijderd ]
Zo zou het wel moeten werken.
quote:Op donderdag 27 maart 2008 19:22 schreef beerten het volgende:
Hoe ziet je tabel er uit en wat wil je ophalen? Welke gegevens wil je?
Je haalt nu ALLES op, alle rijen, alle velden en kolommen. 2 keer zelfs zo te zien.
1 2 3 4 5 | 1 1 2 Titel Ongelezen Ongelezen 1206710100 1 2 2 1 Titel Gelezen Gelezen 1206710100 1 3 1 2 Titel Gelezen Gelezen 1206621950 1 4 2 1 Titel Ongelezen Ongelezen 1206621950 0 |
ook metquote:Op donderdag 27 maart 2008 20:07 schreef DionysuZ het volgende:
Natuurlijk krijg je maar 1 rij terug. Om meerdere rijen terug te krijgen moet je, zoals hierboven ergens ook staat, er een while loopje van maken.
Nee, je krijgt het nulde element van rij 0, het eerste element van rij 1, het tweede element van rij 2, etc.quote:Op donderdag 27 maart 2008 20:11 schreef qu63 het volgende:
[..]
ook met
<?php
$q = "SELECT * FROM meldingen";
$res=mysql_query($q);
$i=0;
while($berichten = mysql_fetch_array($res))
{
print $berichten[$i];
$i++;
}
?>
krijg ik maar 1 rij
1 2 3 4 5 6 7 8 9 10 11 12 | $q = "SELECT * FROM meldingen"; $res=mysql_query($q); $berichten = array(); while($row = mysql_fetch_array($res)) { $berichten[] = $row; } echo '<pre>'; var_dump($berichten); echo '</pre>'; ?> |
1 2 3 4 5 6 7 8 | $q = "SELECT * FROM meldingen"; $stm = $pdo->prepare($q); $berichten = $stm->fetchAll(PDO::FETCH_ASSOC); echo '<pre>'; var_dump($berichten); echo '</pre>'; ?> |
preciesquote:Op donderdag 27 maart 2008 21:31 schreef ursel het volgende:
[..]
Eindelijk iemand ontopic..
Denk alleen dat qu63 er weinig aan heeft...
1 2 3 4 5 6 7 8 9 | description => "Description", sql => qq{ SELECT * FROM table WHERE key = value -- insert more sql code here }, # end of qq }, # end of name_of_query ); |
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 31 32 | my $sql = shift; print STDERR $sql . "\n"; # Some queries return undef # warnings are noise in that case no warnings; foreach ($oracle->do_query($sql)) { print join (",", @$_) . "\n"; } use warnings; } sub do_query { my $query_id = shift; if (exists $queries{$query_id}) { printf STDERR "/* %s */\n", $queries{$query_id}->{description} if defined $queries{$query_id}->{description}; my $sql = $queries{$query_id}->{sql}; if ($opt{limit}) { $sql = join("\n", $sql, sprintf($limit_query, $opt{limit})); } if ($opt{order}) { $sql = join("\n", $sql, $order_query); } sql2csv($sql); } else { printf STDERR "Query for %s does not exists!\n", $query_id; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | exe=./datacheck total="^total_" do_query() { local i for i in $* ; do file=../out/RESULTS.$i $exe --query $i > $file 2>../out/QUERY.$i ; wc -l $file done } do_query $($exe --list | grep $total) $($exe --list | grep -v $total) |
Maakt verder niet uit of je MySQL of Oracle gebruikt. Mijn queries zijn ook onder MySQL te gebruiken. Ik gebruik de PDO variant van Perl, dussuh.. :)quote:Op vrijdag 28 maart 2008 15:11 schreef ursel het volgende:
We werken hier in ieder geval met MySQL.
Weet niet of dat verder consequenties heeft.
Daarnaast, die Perl functie, dat zou betekenen dat ik beide al in een array zal moeten hebben. Weet niet of dat zo tactisch is.. :{
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | my $comp= Array::Compare->new(); open(FH, $csvfile); while(<FH>) { chomp(); # Remove the new line @array_csv = split(/,/, $_); # Do stuff met array_csv to create the SQL code $sql = sprintf "SELECT * FROM example WHERE example_name = '%s'", $array_csv[1]; # ervanuitgaand dat do_query een array returned @array_db = do_query($sql); # Compare werkt met een reference naar een array. if ($comp->compare(\@array_csv, \@array_db)) { # compare is OK } else { # Compare failed } } |
Je kunt met PostgreSQL toch zeker wel geparameteriseerde query's uitvoeren zonder de hele performance om zeep te helpen?quote:Op vrijdag 28 maart 2008 12:50 schreef JeRa het volgende:
Om maar even ontopic te zijn: PDO is leuk en aardig, maar besef dat je in sommige RDBMS'en die partiele indices ondersteunen geen gebruik kunt maken van die indices zodra je prepared statements gebruikt. Voorbeeldje hiervan is PostgreSQL, die het matchen van de indices al tijdens het preparen van de query doet. Door het ontbreken van je condities (je vult ze namelijk pas later in met Statement->bindValue() of ->bindParam()) is het namelijk onmogelijk om te voorspellen wat je query gaat doen.
Dus mijn idee van good practice in deze situatie: prepared statements gebruiken voor situaties waarbij je eenzelfde soort query heel vaak moet uitvoeren of wanneer je niet geavanceerd gebruik maakt van je database, en anders op de 'oude' manier samenstellen en PDO->quote() gebruiken
Oh en hoi.
Dat kan ook wel ja, maar dus niet met partiële indices vanwege de reden die ik noemde. Het is een leuke pitfall in ieder gevalquote:Op zaterdag 29 maart 2008 20:57 schreef SuperRembo het volgende:
[..]
Je kunt met PostgreSQL toch zeker wel geparameteriseerde query's uitvoeren zonder de hele performance om zeep te helpen?
In dat geval lijkt het me good practice om altijd geparameteriseerde query's te gebruiken, tenzij performance een een speciale aanpak vereist.quote:Op zaterdag 29 maart 2008 21:10 schreef JeRa het volgende:
[..]
Dat kan ook wel ja, maar dus niet met partiële indices vanwege de reden die ik noemde. Het is een leuke pitfall in ieder gevalmet MySQL kan ik geen vergelijking geven aangezien die geen partiële indices ként.
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |